Http常用头部整理

Http常用头部整理

http协议

HTTP是一个属于应用层的面向对象的协议,其主要特点为:  

1. 支持客户端/服务器模式;

2. 简单快速的通信;

3. HTTP允许传输任意类型的数据对象。类型由Content-Type加以标记。

4. 无连接、无状态协议;

http报文

用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。

请求报文和响应报文的首部内容由以下数据组成。

请求行 包含用于请求的方法,请求URI和HTTP版本;

状态行 包含响应结果的状态码,原因短语和Http版本;

首部字段 一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。

其他(Cookie等)

HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供 所需要的信息。

下来对HTTP的常用首部字段进行详细介绍

HTTP首部字段根据实际用途被分为以下4种类型。

通用首部字段(General Header Fields)请求报文和响应报文两方都会使用的首部。

请求首部字段(Request Header Fields)从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

响应首部字段( Response Header Fields)从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

实体首部字段(Entity Header Fields)针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

HTTP/1.1 首部字段一览

通用首部字段

首部字段名说明Cache-Control控制缓存的行为Connextion逐跳首部、连接的管理Date创建报文的日期时间Pragma报文指令Transfer-Encoding指定报文主体的传输编码方式Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器 Cache-Control: no-cache:这个很容易让人产生误解,使人误以为是响应不被缓存。 实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。 Cache-Control: no-store:这个才是响应不被缓存的意思。 Pragma: no-cache:跟Cache-Control: no-cache相同,Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。 因此,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1. 另外,客户端不带这个头部请求的话,如果使用本地缓存的话,返回状态码为304。 如果请求头中有cache-control:no-cache头部。则不使用本地缓存,返回状态码不为304(一般为200)。 这里,恰好解决了我之前的一个问题:http://blog.chinaunix.net/uid-1757778-id-5753705.html

请求首部字段

首部字段名说明Accept用户代理可处理的媒体类型Accept-Charset优先的字符集Accept-Encoding优先的内容编码Accept-Language优先的语言Host指定资源所在服务器If-Match比较实体标记(ETag)If-Modified-Since比较资源的更新时间If-None-Match比较实体标记(与If-Match相反)Referer对请求中URI的原始获取方User-AgentHttp客户端程序的信息

Accept属于请求头,表示客户端希望接收的数据类型。 这里有对If-Modified-Since和Last-Modified的一些不错的解释,可以点击这里查看 合理使用If-None-Match和If-Modified-Since头,可以减少流量带宽。

响应首部字段

首部字段名说明Accept-Range是否接受字节范围请求ETag资源的匹配信息Location另客户端重定向至指定URIServerHttp服务器的安装信息Vary代理服务器缓存的管理信息

实体首部字段

首部字段名说明Allow资源可支持的Http方法Content-Encoding实体主体适用的编码方式Content-Language实体主体的自然语言Content-Length实体主体的大小(字节)Content-Location替代对应资源的URIContent-Type实体主体的媒体类型Expires实体主体过期的日期时间Last-Modified资源的最后修改日期时间

从以上这些之外,还有比如Cookie、Set-Cookie和Content-Disposition等在其他RFC中定义的首部字段也经常被用到。 下边为请求一个网页的头部信息实例:

General:

Request URL:http://blog.csdn.net/muzizongheng/article/details/

Request Method:GET

Status Code:200 OK

Remote Address:59.110.88.38:80

Referrer Policy:unsafe-url

Response Header:

Cache-Control:private, max-age=0, must-revalidate

Connection:keep-alive

Content-Encoding:gzip

Content-Type:text/html; charset=utf-8

Date:Mon, 17 Jul 2017 11:16:17 GMT

ETag:W/"ac50f3b564a78d9d789c1aa58f6ae866"

Keep-Alive:timeout=20

Server:openresty

Transfer-Encoding:chunked

Vary:Accept-Encoding

X-Powered-By:PHP 5.4.28

Request Headers:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8  

Accept-Encoding:gzip, deflate, sdch

Accept-Language:zh-CN,zh;q=0.8

Cache-Control:max-age=0

Connection:keep-alive

Cookie:uuid_tt_dd=_; bdshare_firstime=07; UN=_; UE=""; BT=96; uuid=2f6e329e-9f88-4865-8122-f9b62fdbb659; avh=%2c; Hm_lvt_6bcd52f51e9b3dce32bec4aac=,,,; Hm_lpvt_6bcd52f51e9b3dce32bec4aac=; dc_tos=ot8fbt; dc_session_id=06

Host:blog.csdn.net

If-None-Match:W/"ac50f3b564a78d9d789c1aa58f6ae866"

Referer:?url=Wu7VlsW2GRUpclU_zgZy9v_qJkZl1rHrjCTURquEV9PS0fEb1W5xkKsGoufmZVycG5aA8jlSdONEoM8d8mMbuP7vx91QgDaeU5eN7ty9WK7&wd=&eqid=ec2deefc9c69

Upgrade-Insecure-Requests:1

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

往日精选:

2017年 Web 开发趋势

JavaScript 类型的那些事

提高 | 10个JavaScript难点

JavaScript数据结构系列终篇——全系列索引

面向 JavaScript 开发人员的 ECMAScript 6 指南(1 )

面向 JavaScript 开发人员的 ECMAScript 6 指南(2)

面向 JavaScript 开发人员的 ECMAScript 6 指南(3)

如何写好技术简历 —— 实例、模板及工具

29个前端工程师和设计师必备的Chrome插件

陆奇最新演讲:如何成为一个优秀的工程师

这是一个悲伤的程序员爱情故事

WEB缓存探究

小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。