前言
在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
请求行中,包括三部分:
- 请求方法:
post
、get
等 - URL地址
- 协议的版本:
HTTP/1.1
请求行中,三部分内容用空格分割
二、请求头
请求头headers用于指定服务器要使用的附加信息
部分请求头是浏览器会自动添加的,当然也可以添加自定的请求头
1. HOST
HOST标识请求的目的地
HOST主要用来指定被请求资源的Internet主机和端口号,它通常从请求的URL中提取出来
2. User-Agent
- User-Agent记录着客户端的详细信息,服务器可通过User-Agent判断当前HTTP请求客户端的类别。
- 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信息正文的长度。
- 用法1:
Connection: keep-alive
当一个Web页面打开时,客户端和服务器之间用于传输HTTP数据库的TCP连接不会关闭,如果客户端再次访问Web服务器上的网页,会继续使用这条已经建立的连接。
- Connection: close
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并不会修改另一个消息处理过程中的缓存处理过程
请求时的缓存指令包含:
-
no-cache
指示请求或响应消息不能缓存,只能应用于HTTP1.1。 -
no-store
用于防止重要的信息被无意的发布,在请求消息中发送将使得请求和响应消息都不使用缓存。 -
max-age
指示客户端可以接收生存期不大于指定时间的响应,以秒为单位。 -
max-stale
指示客户端可以接收超出超时期间的响应消息,如果指定max-stale消息的值,那么客户端可以接收超出超时期指定值之内的响应消息。 -
min-fresh
指示客户端可以接收响应时间小于当前时间加上指定时间的响应 -
only-if-cached
表示不进行网络请求,完全只使用缓存,若缓存不命中,则返回503错误
三、空行
空行,就是用于分割POST请求的请求头,和请求体的。
四、请求体
请求体,主要封装的是POST请求消息的请求参数;
网友评论