计网
1、GET请求和POST请求的区别?
GET 和 POST请求本质上就是 TCP链接,并无差别。但是由于 HTTP 和浏览器/服务器的限制,导致他们在应用过程中出现了一些不同。
1、请求次数不同
○ GET请求会产生一个 TCP 的数据包
○ POST请求会产生两个TCP的数据包
○ 因为对于GET请求来说,浏览器会将 header 和 data一起发送出去,服务器响应200(返回数据);但是对于 POST 请求来说,浏览器会先发送 header,其次服务器返回 100 countinue,然后再将 data 发送出去,最后服务器返回200
○ 另外的话,不是所有的浏览器都会在POST请求中发送两次包,火狐只会发送一次
2、参数的编码方式不同
○ GET只支持URL编码(ASCII 16进制)
○ POST请求支持多种编码方式
● 3、请求参数的位置不同
○ GET 请求的参数是拼接在 URL的后面
○ POST请求的参数是放在了请求体里面
○ 从这个角度来说,POST请求可能会比GET请求更安全,因为POST请求没有把参数放到url里(有了ssl、http就变成了https,解决了这个问题)
● 4、缓存
○ 对应GET请求来说,它会被浏览器进行缓存
○ 但是POST请求不会
● 5、应用场景不同
○ GET 请求一般用于对服务器资源不会产生影响的场景,比如说,请求一个网页
○ POST请求一般用于会对服务器资源产生影响的场景,比如说,注册用户等类似的操作
注意:http 协议并没,没有对get和post请求的长度进行限制,所谓的浏览器长度限制是由浏览器和 服务器决定和设置的。
2、HTTP 的请求方法(9种)
HTTP 1.0:HEAD、GET和POST
HTTP 1.1:其余6种
● GET
○ 向特定的资源发送请求,返回相应的数据
● HEAD
○ 和get 请求类似,只不过对应 head 而言,服务器不会返回响应体。
○ 最常见的好像就是在下载一个大文件前,先获取它的大小,然后再决定是否下载
● POST
○ 向指定的资源提交数据进行处理请求(上传文件或表单请求)
● OPTION
○ 预检请求,获取服务器所支持的通信选项(请求方式)
● PUT
○ 请求替换目标的资源
● DELETE
○ 删除指定的资源
● PATCH
○ 对指定的资源进行部分修改
● CONNECT
○ 开启一个客户端到所请求资源之间的一个通道
● TRACE
○ 请求的服务器返回其受到的请求信息,主要用来做 http 的测试和诊断
3、http的请求头,响应头
请求头:
● Accpet
○ 告诉服务端,客户端接收什么类型的响应
● Referer
○ 表示这是请求是从哪个URL进来的,比如想在网上购物,但是不知道选择哪家电商平台,你就去问度娘,说哪家电商的东西便宜啊,然后一堆东西弹出在你面前,第一给就是某宝,当你从这里进入某宝的时候,这个请求报文的Referer就是www.baidu.com
● Cache-Control
○ 对缓存进行控制,如一个请求希望响应的内容在客户端缓存一年,或不被缓可以通过这个报文头设置
● Accept-Encoding
○ 这个属性是用来告诉服务器能接受什么编码格式,包括字符编码,压缩形式(一般都是压缩形式)
■ 例如:Accept-Encoding:gzip, deflate(这两种都是压缩格式)
● Host
○ 指定要请求的资源所在的主机和端口
● User-Agent 作用:告诉服务器,客户端使用的操作系统、浏览器版本和名称
响应头:
● Cache-Control
○ 响应输出到客户端后,服务端通过该属性告诉客户端该怎么控制响应内容的缓存
● ETag
○ 表示你请求资源的版本,如果该资源发生啦变化,那么这个属性也会跟着变
● Location
○ 在重定向中或者创建新资源时使用
● Set-Cookie
○ 服务端可以设置客户端的cookie