HTTP请求报文

前言

在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

请求行中,包括三部分:

  • 请求方法:postget
  • 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请求消息的请求参数;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354