HTTP 报文头 初解
来源:互联网 发布:淘宝上什么祛痘产品好 编辑:程序博客网 时间:2024/05/30 19:33
在 HTTP报文 一章中,我们介绍了HTTP协议由 行、头、体组成。而本章,介绍 “头”
如果你写了一个小爬虫,但抓出来的结果和想象的不同(例如界面样式,返回内容和人工看有差异,或者是需要登录),你可以更改你发送的HTTP请求的header部分,将合法的User-Agent、Cookie等添上,能解决大多数此类问题,因为HTTP是无状态并且不安全的协议,所以这些小手段能够生效。
下面取几个常用的头字段来做介绍。
请求首部:
请求首部就是由客户端,放在HTTP请求头中发送给服务器的部分。
User Agent(用户代理)
简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。从而为来自不同平台/浏览器的用户,提供最适合的响应内容。(例如,移动用户不应该收到PC网页的响应,就是由User Agent来做识别的)
Referer (来源)
它表示用户是从哪个网页发起的请求。通常用来做图片防盗链。
例如在图片服务器中解析请求判断Referer,如果非白名单站点发过来的请求,则返回一个防盗链的图片给请求方。
Accept(请求方接受哪些媒体类型)
客户端可以提供Accept首部,告知服务器,自己可以接受哪些类型的返回。例如图片、视频等
Cookie
由于HTTP的无状态性质,所以需要在每次请求时都要带上“我是谁”的信息发给服务器。而Cookie就做了这个事,同时,Cookie也可以让服务器存储部分信息给客户端,就像是:“你来我这里,走的时候带个会员卡,下次直接带上卡过来”
同时,Cookie中能保存用户的身份标识,在下次访问时,服务端可以根据身份标识,提供个性化的内容。
响应首部:
响应首部,就是由服务器,放在HTTP响应头中发送给客户端的部分。
Set-Cookie(为客户端设置Cookie)
这里和请求首部的 Cookie 相对应,正因为服务端在这里向客户端发送了Set-Cookie 指令,所以客户端才知道要把哪些内容作为Cookie存储起来,下次请求时再带上。
Location(重定向使用)
Location一般配合3xx状态码(详见:HTTP状态码) 用于重定向,使得客户端能正确地去找到请求实体。
Content-Length(内容长度)
服务端告知客户端,本次响应内容的长度,如果返回的长度大于告知的长度,则超出的那部分会被丢弃。如果返回的长度小于告知的长度,则客户端会一直等待(因为客户端认为服务端的响应还没有发送完毕)。所以,一个准确的Conetnt-Length是十分必要的。
同时,在做文件下载服务时,返回Content-Length能帮客户端正确的理解本次文件的大小(例如我们平时用浏览器下载文件时,可以提前显示出文件的大小)
- HTTP 报文头 初解
- HTTP 报文头摘录
- HTTP 报文头摘录
- 解析HTTP报文头
- http报文头解析
- HTTP报文头解析(图文)
- HTTP报文解析,请求报文头属性、响应码
- 自己动手学TCP/IP–http协议(http报文头)
- 修改http报文头让显示图像变下载
- c http报文头字段内容解析小函数
- [http请求]——请求方法与报文头格式
- 随笔——python截取http请求报文响应头
- PHP header函数设置http报文头示例详解
- JavaWeb中对HTTP报文头的解析
- PHP header函数设置http报文头示例详解
- c http报文头字段内容解析小函数
- 转发jsonmodel使用 AF Http报文头--------mark
- TCP-IP协议族(二) HTTP报文头解析
- 赋值,浅克隆和深度克隆
- Mysql 事务隔离级别、InnoDB实现隔离机制
- C# 调用 Emgu.CV 显示RTSP流 + 设置程序运行超时时间
- “全选”复选框js编写
- 2017/8/15训练日记
- HTTP 报文头 初解
- 分治法求最大连续和的问题
- spring boot useServerPrepStmts=true可能引起的异常
- 考试总结
- HTTP 延时
- 正向代理和反向代理
- 欢迎使用CSDN-markdown编辑器
- webpack---webpack构建vue多页面框架(三、生产环境与开发环境)
- 基于spark Mllib(ML)聚类实战