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所示。
▲图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 所示。
▲图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所示。
▲图4-5 Fiddler 查看响应 Header
Fiddler 查看和复制 Header
在 Inspectors 下面的 Headers tab 窗口里,我们可以很方便地查看或者复制Header, 如图 4-6 所示。
▲图 4-6 Fiddler 中 Header的操作
往期精彩文章
以上是关于HTTP协议Header介绍的主要内容,如果未能解决你的问题,请参考以下文章