http 常见 header
GET 和 POST 的区别
GET:
传递参数长度受限制,因为传递的参数是直接表示在地址栏中,而特定浏览器和服务器对 url 的长度是有限制的。
GET 不适合用来传递私密数据,也不适合拿来传递大量数据。
POST:
一般的 HTTP 请求大多都是 GET。
POST 把传递的数据封装在 HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据,对数据量没有限制,也不会显示在 URL 中。
表单的提交用的是 POST。
区别:
POST 比 GET 方式的安全性要高。通过 GET 提交数据,用户名和密码将明文出现在 URL 上 。
提交数据形式上 GET 请求的数据会附在 URL 之后,而 POST 方法则会把数据放到请求数据字段中以&分隔各个字段,请求行不包含数据参数,地址栏也不会额外附带参数。
对于 POST 请求来说 Content-Length 必须出现。
https 和 http2
HTTPS:安全 http 协议,RSA 非对称加密,理论上无可接受的破解方案
http2:http 新版本,特性如下。
- 规定所有的数据皆以二进制传输。
- 引入多工技术。同一个连接里面发送多个请求不再需要按照顺序来。
- 头信息压缩以及推送等提高效率的功能:有效的减少带宽使用。
常见 header
文件信息:Content-Type 内容类型
Content-Length 内容长度
压缩:Accept-Encoding
Content-Encoding
代理缓存:Vary
缓存:
Expires
过期时间,这个属性告诉缓存方,相关副本在多长时间内是可用的,当超过这个时间,缓存方就会向服务器发送请求重新获取
Cache-Control
缓存控制
If-None-Match
Etag
缓存方第一次请求时,服务器返回的响应头中会包含一个 Etag 的 hash
之后每次缓存方向服务器请求时都会包含一个 If-None-Match 头信息,内容为服务器返回的 Etag,然后服务器对这个头信息进行判断,如果为最新的,服务器就会返回 304(Not Modified),缓存方直接使用缓存;如果不是最新返回 200,并返回最新的文件,更新 Etag 字段。
If-Modified-Since
Last-Modified- 缓存方第一次请求时,服务器返回的响应头中会包含一个 Last-Modified 头信息,内容为该文件的最后更新时间
之后每次缓存方向服务器请求时都会包含一个 If-Modified-Since 头信息,内容为服务器返回的 Last-Modified,然后服务器对这个头信息进行判断,如果为最新的,服务器就会返回 304(Not Modified),缓存方直接使用缓存;如果不是最新返回 200,并返回最新的文件,更新 Last-Modified 字段。
长连接:
connection 提高链接效率
Keep-Alive
Keep-Alive 用来设置该连接的过期时间
重定向:Location
参考资料:https://www.cnblogs.com/hnhycnlc888/p/9607632.html
https://www.cnblogs.com/zhoudaxing/p/10760733.html
request 和 reponse 实例
POST www.baidu.com HTTP/1.1
Accept:/
Accept-Language:zh-cn
Content-Length :2000
Accept-Encoding: gzip
HTTP/1.1 200 OK
Content-Length :2000
Content-Language:zh-cn
Content-Encoding: gzip
Date:Sat, Feb 2020 02:37:00 GMT