HTTP 报文头
报文头
HTTP的报文头大体可以分为四类,分别是
- 通用报文头
- 请求报文头
- 响应报文头
- 实体报文头
在http/1.1里一共规范了47种报文头字段
POST /webTours/login.pl HTTP/1.1 // 请求方法 请求uri地址,更多的时候也是url 协议名称与版本
HOST:10.223.12.221:1080 // host地址
Connection:keep-alive
Content-Length:138
Pragma: no-cache
Cache-Control: no-cache
Origin: http://10.223.12.221:1080
Upgrade-Insecure-Requests:1
Content-Type:application/x-www-form-urlencoded
User-Agent:mozila/5.0 ...
Accept:text/html,application...
Referer:http://10.223.12.221:1080/webTours/nav.pl?in=home
Accept-Encoding:gzip,deflate
Accept-Language:zh-CN,zh;q=0.9
Cookie:MSO=SID&1565154821
通用报文头
Cache-Control: 控制缓存的行为
Connection:逐跳首部、连接的管理
Date:创建报文的日期时间
Pragma: 报文指令
Trailer:报文末端的首部一览
Upgrade:升级为其他协议
Via:代理服务器的相关信息
Warning:错误通知
请求报文头
Accept:用户代理可处理的媒体类型
Accept-Charset:优先的字符集
Accept-Encoding:优先的内容编码
Accept-Language:优先的语言
Authorization:Web认证信息
Expect:期待服务器特定行为
From:用户的电子邮箱地址
Host:请求资源所在服务器
If-Match:比较实体标记(ETag)
If-Modified-Since:比较资源的更新时间
If-None-Match: 比较实体标记
If-Range:资源未更新时发送实体Byte的范围请求
If-Unmodified-Since:比较资源的更新时间(与if-m-s相反)
Nax-Forwards:最大传输逐跳数
Proxy-Authorization:代理服务器要求客户端的认证信息
Range:实体的字节范围请求
Referer:对请求中URI的原始获取
TE:传输编码的优先级
User-Agent:HTTP客户端程序的信息
响应报文头
Accept-Ranges:是否接受字节范围请求
Age:推算资源创建经过时间
ETag:资源的匹配信息
Location:令客户端重定向至指定URI
Proxy-Authenticate:代理服务器对客户端的认证信息
Retry-After 对再起发起请求的时机要求
Server:HTTP服务器的安装信息
Vary:代理服务器缓存的管理信息
WWW-Authenticate:服务器对客户端的认证信息
实体报文头
Allow: 资源可支持的HTTP方法
Content-Encoding:实体主体使用的编码方式
Content-Length:实体主体的大小(单位是字节)
Content-Location:替代对应资源的uri
Content-MD5:实体主题的报文摘要
Content-Range:实体主题的位置范围
Content-Type:实体主体的媒体类型
Expires:实体主体过期的日期时间
Last-Modified: 资源的最后修改日期时间
示例解释
Accept
作用:浏览器端可以接受的媒体类型,如text/html
如果服务器无法返回一个text/html类型的数据,服务器应该返回一个406错误(Non Acceptable)
值:
/ 代表浏览器可以处理所有类型
权重值 q=(范围是0~1) 首先返回权重值最高的媒体类型
Accept-Encoding
作用:浏览器声明自己接受的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法
(gzip,defalte)
Accept-Language
作用:浏览器声明自己接收的语言,我在某个国家,希望看到不同的语言
Accept-Language:zh-cn,zh;q=0.7,en-us,en;q=0.3 优先返回中文版,其次是英文版
Connection
作用:
keep-alive:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭
如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接(减少握手次数)
close:当一个请求完成后,C/S间的TCP连接会关闭,再次发送请求,再次建立连接
Host
作用:请求报文头用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来
即服务器的主机和端口号
url: http://www.baidu.com:8080
HOST:www.baidu.com:8080
Referer
当浏览器向web服务器发送请求的时候回带上referer字段,告诉服务器我是从哪个页面链接过来的
服务器可以借此获得一些信息用于处理
User-Agent
作用:
告诉HTTP服务器,客户端使用的操作系统和浏览器名称和版本
很多情况下我们会通过User-Agent来判断浏览器类型,从而进行不同的兼容设计
Content-Type
作用:说明报文体内对象的媒体类型
text/html:HTML格式
text/plain:纯文本格式
text/xml:xml格式
image/gif:gif格式
image/jpeg:jpg格式
image/png:png格式
application/xhtml+xml:XHTML格式
application/xml:XML数据格式
application/atom+xml:Atom XML聚合格式
application/json:json数据格式
application/pdf:pdf格式
application/msword:word文档格式
application/octet-stream:二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded:表单提交
这就是我们说http灵活的原因,支持很多种格式