HTTP请求报文

2022-06-17  本文已影响0人  fanren

前言

在HTTP请求中,消息报文分为Request和Response两种
例如:下边就是一个HTTP请求报文

POST /chd/api/settlement/guangdong/monthly/accounting HTTP/1.1
Content-Type: application/json
Accept: 
Accept-Language: zh-CN,zh-Hans;q=0.9
Accept-Encoding: gzip, deflate
Host: localhost:3000
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15
Connection: keep-alive
Referer: http://localhost:3000/settlementbi/electricityBilling
Content-Length: 58
Cookie: 
domain
visitSource: em

Request消息主要包括四部分:

一、请求行request-line

请求行中,包括三部分:

请求行中,三部分内容用空格分割

二、请求头

请求头headers用于指定服务器要使用的附加信息

部分请求头是浏览器会自动添加的,当然也可以添加自定的请求头

1. HOST

HOST标识请求的目的地

HOST主要用来指定被请求资源的Internet主机和端口号,它通常从请求的URL中提取出来

2. User-Agent

User-Agent由客户端(浏览器)来定义且会在每个请求中自动发送

3. Accept

Accept的作用,是向服务器申明客户端可以接收的媒体类型(MIME)的资源,简单来说就是表示客户端支持的MIME类型。
Accept媒体类型中的先后次序表示客户端接收的先后顺序

Accept中可以使用通配符/表示任意类型的数据

4. Accept-Language

Accept-Language指定HTTP请求返回信息时优先选择的语言
例如:Accept-Language: zh-cn,zh;q=0.5
客户端支持的语言分别是中文和简体中文,优先支持简体中文。

q 表示权重系数,范围0~1,q值越大请求越倾向于获取;之前的类型所表示的内容,若没有指定q值则默认为1。若q值为0则用于提醒服务器哪些是浏览器不接受的内容类型。

5. Accept-Encoding

Accept-Encoding允许服务器将输出内容发回客户端之前进行压缩,以节约带宽。这里设置的就是客户端所能够支持的压缩格式。
例如:Accept-Encoding: gzip,deflate

6. Accept-Charset

Accept-Charset指定客户端可以接受的字符编码集。
例如:Accept-Charset: gb2312, utf-8; q=0.7, *;q=0.7

浏览器支持的字符编码分别是gb2312、utf-8和任意字符,优先顺序为gb2312、utf-8、*。

7. Content-Type

Content-Type表示HTTP请求提交的内容类型,只有在POST方法提交时才需要设置此属性。
例如:Content-Type: application/x-www-form-urlencoded;charset:UTF-8

8. Content-Length

Content-Type是请求体内容的长度,单位字节(byte)

并不包含请求行和请求头的数据长度。

9. Connection

Connection表示是否需要持久连接,如果服务器接收到Connection的属性值为Keep-Alive,或者请求所使用的协议版本是HTTP 1.1(默认持久连接),此时就会采用持久连接。

可以利用持久连接的优点,当页面包含多个元素时,可以显著的减少下载所需的时间。要实现这一点,Web服务器需要在返回给客户端的HTTP头信息中加入Content-Length信息正文的长度。

当一个Web页面打开时,客户端和服务器之间用于传输HTTP数据库的TCP连接不会关闭,如果客户端再次访问Web服务器上的网页,会继续使用这条已经建立的连接。

close表示一个Requset请求完成后,客户端和Web服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request请求时,需要重新建立TCP连接。

10. Keep-Alive

Keep-Alive指定HTTP持久连接的时长,用来保证客户端到服务器的连接持续有效。当出现对服务器的后续请求时,Keep-Alive可以避免重建连接。

早期的HTTP请求是一站式连接,从HTTP协议1.1版本之后就开始支持长连接。长连接简单来说,就是在Keep-Alive规定的时间内连接不会断开。
例如:Keep-Alive:300

11. Cookie

Cookie用来存放一些用户身份的数据

12. Refer

Refer包含了一个URL,表示用户从该URL页面触发访问当前请求的页面。

13. Cache-Control

Cache-Control用于指定请求和响应遵循的缓存机制。

在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程

请求时的缓存指令包含:

三、空行

空行,就是用于分割POST请求的请求头,和请求体的。

四、请求体

请求体,主要封装的是POST请求消息的请求参数;

上一篇 下一篇

猜你喜欢

热点阅读