请求与响应的上下文
HTTP请求与响应都有一些表示上下文的常用的头部,所谓上下文就是请求从哪里来,请求或者响应对后续的请求与响应产生哪些影响。
请求的上下文:User-Agent
指明客户端的类型信息,服务器可以据此对资源的表述做抉择
User-Agent = product *( RWS ( product / comment ))
- product = token [ "/" product-version ]
- RWS = 1*( SP / HTAB)
例如:有对Mozilla的支持信息、客户端电脑系统版本、浏览器的渲染引擎信息、浏览器版本等信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
请求的上下文:Referer
浏览器对来自某一个页面的请求会自动添加头部,如果非浏览器不一定添加头部。例如,在我的博客中添加的链接,点击这个链接抓取到的请求报文中就会有Referer 。
- Referer = absolute-URI / partial-URI
- 例如:Referer: https://www.cnblogs.com/
Referer 不会被添加的场景
- 来源页面采用的协议为表示本地的文件的 "file" 或 "data" URI
- 当前请求页面采用的时 http 协议,而来源页面采用的时 https 协议
服务器端常用于统计分析、缓存分析、防盗链等功能
请求的上下文:From
- 主要用于网络爬虫,告诉服务器如何通过邮件联系到爬虫的负责人
- From = mailbox
- 例如:From:webmaster@example.org
响应中的上下文:Server
- 指明服务器端上所使用的软件信息,用于帮助客户端定位问题或者统计数据
- Server = product *( product / comment )
- product = token [ "/" product-version ]
例如:
- Server: nginx
- Server: openresty/ 1.13.6.2
响应中的上下文:Allow 与 Accept-Ranges
Allow:告诉客户端,服务器告诉客户端该 URI 对应的资源允许哪些方法的执行
- Allow = #method
- 例如:Allow: GET,HEAD,PUT
Accept-Ranges:告诉客户端服务器上的资源是否允许 range 请求
- Accept-Ranges = acceptable-ranges
例如:
- Accept-Ranges:bytes
- Accept-Ranges:none