美文网首页
HTTP请求报文

HTTP请求报文

作者: fanren | 来源:发表于2022-06-17 17:48 被阅读0次

前言

在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请求消息的请求参数;

相关文章

  • HTTP协议报文及Chrome Network常用功能

    HTTP协议报文 Http协议报文分为【Http请求报文】和【Http响应报文】 HTTP请求报文 Http请求报...

  • 动脑学院架构篇-HTTP请求、响应报文格式

    【HTTP】HTTP请求、响应报文格式 HTTP请求报文格式: HTTP请求报文主要由请求行、请求头部、请求数据3...

  • 彻底搞懂 HTTP 报文、报文信息以及 HTTP 状态码

    一、HTTP 报文 用于HTTP协议交互的信息被称为HTTP报文, HTTP 报文分为请求报文和响应报文; 请求报...

  • HTTP 首部字段

    HTTP 报文 HTTP 请求报文 在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部...

  • 关于http报文

    1.http请求报文 首先说http请求的报文是什么样的,http报文包括请求行、请求头、请求体(请求正文)。 请...

  • Android 基础之网络

    HTTP Http报文 http报文可以分为请求报文和响应报文。请求报文格式: 响应报文格式: 解释下各个标签: ...

  • HTTP之报文结构

    HTTP报文结构 HTTP请求报文 HTTP请求报文由方法、URI、HTTP版本、HTTP首部字段等部分构成 比如...

  • http报文解析, 网络通信协议类型,cookie,token,

    HTTP报文: HTTP报文的流动方向: 报文的语法: 1.1请求报文: 请求报文的格式: 1.2响应报文: 响应...

  • 网络

    HTTP HTTP是一个超文本传输协议 构成:请求报文&响应报文 请求报文 响应报文 HTTP的请求方式有哪些? ...

  • 网络请求相关

    HTTP 超文本传输协议 请求/响应报文 连接建立流程 HTTP的特点 1. 请求/响应报文 请求报文请求报文包括...

网友评论

      本文标题:HTTP请求报文

      本文链接:https://www.haomeiwen.com/subject/xqhhvrtx.html