网络通信的奥秘:HTTP详解 (七)

通过form表单构造HTTP请求

  • action:构造的HTTP请求的URL是什么.
  • method:构造的HTTP请求的⽅法是GET还是POST(form只⽀持GET和POST). input的重要参数:
  • type:表⽰输⼊框的类型.text表⽰⽂本,password表⽰密码,submit表⽰提交按钮.
  • name:表⽰构造出的HTTP请求的querystring的key.querystring的value就是输⼊框的⽤⼾输 ⼊的内容.
  • value:input标签的值.对于type为submit类型来说,value就对应了按钮上显⽰的⽂本.

点击"提交",此时就会构造出HTTP请求并发送出去.

构造的HTTP请求

注意:由于我们的服务器的地址是随便写的,因此⽆法获取到正确的HTTP响应.

体会form代码和HTTP请求之间的对应关系

修改上⾯的代码,把form的method修改为POST

主要的区别:

  • method从GET变成了POST
  • 数据从querystring移动到了body中.

通过ajax构造HTTP请求

在JavaScript中可以通过ajax的⽅式构造HTTP请求.

发送GET请求

创建test.html,在<script>标签中编写以下代码

此处使⽤的是jquery的ajax,⽽不是原生ajax.原⽣ajax⽐较难⽤.

注意:如果把send中的地址改成其他服务器的地址(⽐如http://www.sogou.com/index.html这种), ⼤概率是会出错的.

错误形如:

这个错误是因为ajax默认不能"跨域",也就是"百度下⾯的html中的ajax不能访问搜狗的内容".这样的设定也是完全合理的.如果想要强⾏进⾏跨域,则需要服务器进⾏配合,在服务器的响应中"允许跨域"才可以.

浏览器和服务器交互过程(引⼊ajax后):

发送POST请求

对于POST请求,需要设置body的内容

  1. 先使⽤setRequestHeader设置Content-Type
  2. 再通过send的参数设置body内容. 发送application/x-www-form-urlencoded数据(数据格式同form的post)

发送application/json数据

通过Javasocket构造HTTP请求

所谓的"发送HTTP请求",本质上就是按照HTTP的格式往TCPSocket中写⼊⼀个字符串. 所谓的"接受HTTP响应",本质上就是从TCPSocket中读取⼀个字符串,再按照HTTP的格式来解析. 我们基于Socket的知识,完全可以构造出⼀个简单的HTTP客⼾端程序,⽤来发送各种类型的HTTP请求.

使⽤Java构造的HTTP客⼾端不再有"跨域"限制了,此时也可以⽤来获取其他服务器的数据了. 跨域只是浏览器的⾏为,对于ajax有效.对于其他语⾔来说⼀般都和跨域⽆关.

相关推荐
阿成学长_Cain8 小时前
Linux telinit 命令详解:运行级别切换|关机重启|系统维护一站式掌握
linux·运维·前端·网络
NiceCloud喜云9 小时前
Anthropic 一周三连发:Cowork 多端、Fable 5 按需付费、J-space 论文的技术解读
java·服务器·网络·人工智能·ai
门思科技9 小时前
TKL + EB:重新定义 LoRaWAN 在存量设备改造中的价值,让传统设备快速接入物联网
网络·物联网
qeen8710 小时前
【Linux】指令补充与shell的简单介绍
linux·运维·服务器
hai31524754310 小时前
九章芯片电路集成体系:密度矩阵逆向·全域均衡网络计算总框架
网络·线性代数·矩阵
DLYSB_10 小时前
《从零开始搭建机房轻量化“声光告警”系统:基于 HTTP API 与 TTS 的运维实践》
运维·网络协议·http·报警灯
芝麻馅汤圆儿10 小时前
跨三层环境(交换机vlan/vlanif配置)
网络
ZhengEnCi10 小时前
N3A-一个端口只能给一个程序使用吗?
网络协议
发光的沙子11 小时前
FPGA----配置根文件系统ip和mac地址
网络协议·tcp/ip·macos
wjql211 小时前
手机远程操控另一台手机的方法 手机可以远程操控手机吗
网络