HTTP协议那些事儿
- 1 min之前面试总是问到这方面的知识,可能觉得自己还有所欠缺,所以想在这里记一笔,总结也是一种学习。
HTTP干什么的
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。属于应用层面向对象的一个协议,前端开发用到它的一般就是向服务器请求数据,然后返回客户端渲染。
我们需要知道的
HTTP之Request Header
- Accpect 请求格式
- Accpect-Encoding 说明自己可以接受的压缩格式
- Accpect-Language 说明自己可以接受的语言格式
- Connection 说明该TCP连接的连接方式
- keep-alive 表示不关闭,可复用该连接发送请求,服务器端同样回应该字段
- close 表示请求发送就关闭连接,不等待服务端返回,想发送连接必须新建,需要客户端和服务端三次握手,开始时发送速率较慢,成本较高
- Cookie 每次发送http请求本域名下的cookie会作为附带信息传给服务器
- Host 客户端指定自己想请求的服务球的域名/IP之类的
- If-Modified-Since告诉服务端如果请求的对象在该请求头指定的时间之后修改了,则执行该动作
- If-Range告诉浏览器如果请求的对象没有改变就把剩余的部分传给我,如果已经发生改变就把新的对象传给我
- If-Match 设置了Etag,然后对象的Etag没有变化就执行此动作
- If-None-Match 设置了Etag,然后对象的Etag发生了变化就执行此动作
- Referer 向服务端表明客户端从哪里获得此请求连接的
- User-Agent 客户端说明自己身份
- Request-Url 请求服务端的url
- Request-Method 请求方法 get/post/put/delete
HTTP之Response Header
- Cache-Control
- no-cache 会发起往返通信来验证缓存的响应,但如果资源未发生变化,则可避免下载。
- no-store 会禁止浏览器以及中间缓存缓存一切响应数据
- max-age 只接受age值小于max-age的并且没有过期的对象
- max-stale 可接受过期的值,但是过期时间小于max-stale
- min-fresh 可接受新鲜生命周期大于当前min-fresh的对象缓存
- pustronglic 任意用户可使用缓存数据
- private 只有之前请求该对象的用户可使用缓存数据
- Etag 对一个对象的标志值,来判断该对象是否被改变,和cache-control搭配使用
- Server 说明服务端的软件以及版本信息
- Content-Encoding 声明服务端的压缩格式
- Conent-Language 声明服务端的语言格式
- Conent-Length 声明服务端响应的字符长度
- Content-Range 告诉客户端响应的是整体对象的哪个部分
- Content-Type 声明服务端的响应对象的格式
HTTP之状态码
参考资料: