HTTP协议Header介绍

Posted 凡猫软件测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议Header介绍相关的知识,希望对你有一定的参考价值。




HTTP Header介绍


HTTP 请求中有 Header, HTTP 响应中也有Header.使用 Fiddler的Raw选项卡可以看到完整的Header。


Header的语法格式是“key:value”, 一行一个Header.每一个Header 都有特殊的作用,在Fiddler中可以查看完整的 Header, 如图4-1所示。


▲图 4-1 Fiddler 查看Header


Fiddler 查看HTTP请求 Header


使用 Fiddler 能很方便地查看 HTTP 请求 Header.选中一个HTTP请求,单击Inspectors tab-> Request tab-> Headers, 如图4-2所示。


HTTP协议Header介绍

▲图4-2 Fiddler中的Headers选项卡


Header 有很多,比较难以记忆。Fiddler 中的 Headers 选项卡把Header 进行了分类,这样比较清晰,也容易记忆。


4.2.1

Cache 相关的 Header


HTT 请求和HTTP 响应中都有很多用于缓存的 Header。


HTTP 缓存是指当 Web 请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。


本书第6章会专门讲缓存,并对 Cache 相关的 Header进行详细讲解。


4.2.2

Cookies


Cookie是一种 HTTP Header, 是HTTP 中非常重要的内容。它由key=value 的形式组成,比如ip_country=CN。


浏览器把Cookie通过HTTP 请求中的“Cookie:header”发送给Web服务器,Web服务器通过HTTP 响应中的“Set-Cookic:header”把Cookie 发送给浏览器。


本书第11章会详细讲解Cookie。


4.2.3

Accept


Accept 表示浏览器客户端可以接受的媒体类型。


例如,Accept:text/html 代表浏览器可以接受服务器返回 html, 也就是我们通常说的html 文档。


通配符*代表任意类型,例如 Accept:text/html, */*;q=0. 8代表浏览器可以处理所有的类型。一般浏览器客户端给Web服务器发送的都是这个。


4.2.4

Accept-Encoding


Accept-Encoding 跟压缩有关,浏览器发送请求给Web服务务器,HTTP请求中的Header 有 Accept-Encoding:gzip,deflate (告诉服务器,浏览器支持gzip压缩)。


4.2.5

Accept-Language


Accept-Language 的作用是浏览器声明自己接受的语言。

语言跟字符集的区别在于:中文是语言,中文有多种字符集,比如big5、gb2313、gbk 等。示例如下:


Accept-Language:en-US,en;q=0. 8,zh-CN;q=0. 6,zh;q=0. 4,zh-TW;q=0. 2


4.2.6

User-Agent


User-Agent 的作用是浏览器用来告诉服务器,客户端使用的操作系统及成本、Cpp型、浏览器及版本、浏览器消染引整、浏览器语言、浏览器插件等。


User-Agent: Mozilla/5.0 (Windows NT 10.0;WOW64; rv:40.0) Gecko/20100101 Firefox/40.0<br>


这个代表客户端用的是64位win10系统,Firefox是40. 0版本。


假如用手机的 APP 访问网站,APP中的HTTP 请求会包含如下的 User-Agent:


User-Agent: Dalvik/2. 1. 0 (Linux; U; android 6. 0; Redmi Note 4 MIUI/ V8. 5. 2. 0. MBFCNED)


这个User-Agent 表示客户端用的是红米 Note 4, Android 6. 0 版本。


如果我们想模拟各种不同的客户端,只需要修改 User-Agent, 就可以伪装成各种客户端。


4.2.7

Fiddler修改User-Agent, 伪装客户端


实例:

Fiddler 可以帮我们修改 User-Agent, 这样就能伪装成任何客户端。操作步骤如下。

(1) 启动Fiddler, 单击 Rules-> User-Agents, 选择iPhone6, 如图4-3 所示。


HTTP协议Header介绍

▲图4-3 Fiddler修改 Header


(2) 打开浏览器,输入www.taobao.com,可以看到淘宝的页面变成了移动版的淘宝页面。

(3) 在Fiddler中,我们可以查看 User-Agent 的值如下:


  1  User-Agent: Mozilla/5. 0 (iPhone; CPU iphone OS 8 _3 like Mac OS X) AppleWebkit/ 600. 1. 4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4


4.2.8

Referer


HTTP 协议头中的 Referer主要用来让服务器判断来源页面,即用户是从哪个页面来的。网站通常用其来统计用户来源,看用户是从搜索页面来的,还是从其他网站链接过来的,或是从书签等访问的,以便合理定位网站。



实例:天涯网站中的图片会验证 Referer; 如果没有 Referer, 网站会认为是盗链。


(1) 在www.tianya.cn 中找到一张图片的网址,例如 http: //img3.laibafile.cn/p/m/280148719.png。

(2) 启动Fiddler, 打开浏览器,直接输入http: //img3.laibafile.cn/p/m/280148719.png。

(3) 我们可以看到图片上显示“该图片仅供天涯社区用户分享"。

 (4)在Fiddler中可以看到HTTP请求中没有Referer,所以被Web服务器认为是盗链。


4.2.9

Connection


从HTTP/1. 1起,系统默认都开启了 Connection: Kecp-Alive, 保持连接特性。


IP协议是基于TCP协议的,当一个网页完全打开后,客户端和服务器之间用于HITP数据的TCP 连接不会关闭,如果客户端再次访问这个服务器上的网页,将会继续使用这一条已经建立的连接。


Kecp-Alive 不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache) 中设定这个时间。


4.2.10

Host


Host 这个Header 是必需的,它的作用是指定被请求的主机和端口号,它通常从 HTTP URL中提取出来。


实例:我们在浏览器中输入 

http://fanmao.mysxl.cn/

浏览器发送的 HTTP请求中就会包含 Host 的Header, 例如http://fanmao.mysxl.cn/此处使用了默认端口80。


如果指定了端口号,例如我们在浏览器中输入

http://fanmao.mysxl.cn/, 则Header 变为

Host:fanmao.mysxl.cn。


Fiddler查看HTTP响应 Header


如图4-5所示,单击“Inspectors tab”, 在HTTP响应中单击“Headers”能看到 Fiddler对HTTP响应 Header 进行了分类,如图4-5所示。


HTTP协议Header介绍

▲图4-5 Fiddler 查看响应 Header


Fiddler 查看和复制 Header


在 Inspectors 下面的 Headers tab 窗口里,我们可以很方便地查看或者复制Header, 如图 4-6 所示。


HTTP协议Header介绍

▲图 4-6 Fiddler 中 Header的操作



往期精彩文章



以上是关于HTTP协议Header介绍的主要内容,如果未能解决你的问题,请参考以下文章

java中如何设置HTTP协议的头信息(header)

鲜为人知的HTTP协议头字段详解大全

HTTP协议关于Header

http协议发送header+body+json及接收解析

HTTP协议header标头说明

HTTP协议其他