HTTP协议——报文、报文首部和响应码

一、HTTP报文

请求报文:

HTTP协议——报文、报文首部和响应码_第1张图片

例:

GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
\r\n
body

响应报文:

HTTP协议——报文、报文首部和响应码_第2张图片

例:

HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Wed, 10 Apr 2019 07:37:31 GMT
Expires: Wed, 10 Apr 2019 07:37:31 GMT
Server: BWS/1.1
Strict-Transport-Security: max-age=172800
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
\r\n
body

二、报文首部:

(一)通用首部

1、 Cache-Control

示例:

Cache-Control: private, max-age=0, no-cache

HTTP协议——报文、报文首部和响应码_第3张图片

 

Pragma: no-cache:Pragma 是 HTTP/1.1 之前版本的历史遗留字段,仅作为与 HTTP/1.0的向后兼容而定义。所以与Cache-Control:no-cache一起使用来保持兼容性。

2、 Connection

Connection 首部字段具备如下两个作用:

(1)管理长连接

Connection: Keep-Alive

(2)使用升级协议,常与Upgrade首部一起使用

Upgrade:websocket
Connection:Upgrade

(二)请求首部

1、Accept

Accept 首部字段可通知服务器,用户代理能够处理的媒体类型及媒体
类型的相对优先级

示例:

Accept: text/html,application/xhtml+xml,application/xml;q=0.4

若想要给显示的媒体类型增加优先级,则使用 q= 来额外表示权重值1,用分号(;)进行分隔。权重值 q 的范围是 0~1(可精确到小数点后 3 位),且 1 为最大值。不指定权重 q 值时,默认权重为 q=1.0。

2、Accept-Charset

用来通知服务器用户代理支持的字符集及字符集的相对优先顺序。另外,可一次性指定多种字符集

示例:

Accept-Charset: iso-8859-5, unicode-1-1;q=0.8

3、Accept-Encoding

用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序。可一次性指定多种内容编码。

示例:

Accept-Encoding: gzip, deflate

4、Accept-Language

用来告知服务器用户代理能够处理的自然语言集

Accept-Language: zh-cn,zh;q=0.7,en-us,en;q=0.3

5、Host

       首部字段 Host 会告知服务器,请求的资源所处的互联网主机名和端口号。Host 首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段。首部字段 Host 和以单台服务器分配多个域名的虚拟主机的工作机制有很密切的关联,这是首部字段 Host 必须存在的意义。

Host: www.baidu.com

6、Referer

从哪个WEB页面发起的请求

Referer: http://www.hackr.jp/index.htm

7、User-Agent

将浏览器信息传送给服务器

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

8、Cookie

Cookie: status=enable

(三)响应首部

1、Age

源服务器在多久前创建了响应。字段值的单位为秒。

Age: 600

2、ETag

告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。

ETag: "82e22293907ce725faf67773957acd12"

3、Location

重定向url

Location: http://www.usagidesign.jp/sample.html

4、Server

Web服务器信息

Server: Apache/2.2.17 (Unix)

5、Retry-After

多久之后再次发送请求。主要配合状态码 503 Service Unavailable 响应,或 3xx Redirect 响应一起使用。

Retry-After: 120

6、Set-Cookie

HTTP协议——报文、报文首部和响应码_第4张图片

expires 属性:当省略 expires 属性时,其有效期仅限于维持浏览器会话(Session)时间段内。这通常限于浏览器应用程序被关闭之前。

HttpOnly 属性:Cookie 的 HttpOnly 属性是 Cookie 的扩展功能,它使 JavaScript 脚本无法获得 Cookie。其主要目的为防止跨站脚本攻击(Cross-sitescripting,XSS)对 Cookie 的信息窃取。

(四)实体首部

1、Allow

支持的HTTP方法

Allow: GET, HEAD

2、Content相关

      Content-Encoding

      Content-Language

      Content-Length

      Content-Location

      Content-MD5

      Content-Type

3、Expires

将资源失效的日期

Expires: Wed, 04 Jul 2012 08:26:05 GMT

4、Last-Modified

资源最后修改时间

Last-Modified: Wed, 23 May 2012 09:59:55 GMT

 

三、响应码

HTTP协议——报文、报文首部和响应码_第5张图片

200(OK):请求被正常处理
204(No Content):请求被受理但没有资源可以返回。该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。
206(Partial Content):客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301(Moved Permanently):永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
302(Found):临时重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
400(Bad Request):请求报文语法有误,服务器无法识别
401(Unauthorized):请求需要认证
403(Forbidden):请求的对应资源禁止被访问
404(Not Found):服务器无法找到对应资源
500(Internal Server Error):服务器内部错误
503(Service Unavailable):服务器正忙

你可能感兴趣的:(HTTP)