1、短连接和长连接
1.1 Connection头部
- Connection:keep-Alive 长连接
- Connection:close 短连接
Connection仅对当前连接有效
1.2 Proxy- Connection 代理服务器的Connection头部
2.消息的转发
2.1 Max-Forwards头部
限制经过的代理服务器的最大个数,仅对TRACE和OPTIONS方法有效
2.2 Via头部
指明经过的代理服务器名称和版本
2.3 Cache-Control:no-transform :禁止代理服务器修改响应包体
2.4 当网络中存在许多反向代理,各层IP地址都各不相同
- X-Forwarded-For:用于传递多层IP
- X-Real-IP:传递用户IP
3. 请求的上下文
3.1 User-Agent头部
指明客户端的类型信息(如操作系统信息和浏览器的渲染引擎,服务器可以据此对资源的表述做抉择
3.2 Referer头部
浏览器对来自某一页面的请求自动添加的头部
不会被自动添加的情况:来源页面的协议为表示本地文件的file或Data URI
当前请求页面采用的协议是http ,来源页面的协议是https
3.3 From头部
主要用于网络爬虫,用于告诉服务器如何通过邮件找到爬虫负责人(From:xxx@example.com)
4.响应的上下文
4.1 Server头部
指明服务器上所用软件的信息,帮助客户端定位问题
4.2 Allow头部
告诉客户端,服务器上该URI对应的资源运行哪些方法的执行(比如GET、POST等)
4.3 Accept-Ranges头部
告诉客户端服务器上该资源是否运行range请求,例如Accept-Ranges:bytes
5. 内容协商
请求的头部:
Accept:内容可接受的类型及优先级
Accept-Charset:字符编码(已废弃)
Accept-Encoding:内容编码,只压缩算法,比如zip
Accept-Language:表述语言
响应的头部:
Content-Encoding:gzip
Content-Type:application/json;charset=UTF-8 媒体的类型及编码
Content-Language:响应语言
6.包体
1、是否确定包体的全部长度(响应端)
- 已能确定全部长度:Content-Length:明确指明包体长度
- 不能确定包体长度:Transfer-Encoding:"chunked"/"gzip"/"compress"...
(更多chunk(分块传输编码)见视频)
7、Range 请求范围
7.1 基于字节,设包体总长为1000
第一个500字节:bytes=0-499
最后一个500字节:bytes=-500
第一个字节:bytes=0-0
最后一个字节:bytes=-1
通过Range传递请求范围:Range:bytes=0-499
7.2服务器响应
1) 206 Partial Content
Content-Range:显示当前片段包体在完整包体中的位置
Content-Range:bytes 12-111/123
2)416 Range Not Satisfiable 请求范围不满足实际资源的大小
Content-Range:bytes */123
3) 200 OK 服务器不支持Range请求时,则以200返回完整的响应包体
8、跨域访问
请求Origin头部:来自哪个域名
响应Access-Control-Allow-Origin头部:允许哪些域名
转载: https://time.geekbang.org/course/detail/175-93590
??????