HTTP请求报文结构和请求方法(通俗易懂)!!

  • 一、HTTP请求报文
    • 1.请求行
    • 2.请求头部
    • 3.空行
    • 4.请求数据
  • 二、HTTP请求的方法

一、HTTP请求报文

一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。

1.请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1

方法字段就是HTTP使用的请求方法,比如常见的GET/POST

其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别:

HTTP1.0对于每个连接都只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Host字段;而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

2.请求头部

HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现。

常见的请求头字段含义:

字段 含义
Accept 浏览器可接受的MIME类型
Accept-Charset 浏览器可接受的字符集
Accept-Encoding 浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间
Accept-Language 浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到
Authorization 授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中
Content-Length 表示请求消息正文的长度
Host 客户机通过这个头告诉服务器,想访问的主机名。Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
If-Modified-Since 客户机通过这个头告诉服务器,资源的缓存时间。只有当所请求的内容在指定的时间后又经过修改才返回它,否则返回304“Not Modified”应答。
Referer 客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(防盗链)。包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
User-Agent User-Agent头域的内容包含发出请求的用户信息。浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用
From 请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它

3.空行

它的作用是通过一个空行,告诉服务器请求头部到此为止。

4.请求数据

若方法字段是GET,则此项为空,没有数据

若方法字段是POST,则通常来说此处放置的就是要提交的数据

比如要使用POST方法提交一个表单,其中有user字段中数据为“admin”, password字段为123456,那么这里的请求数据就是 user=admin&password=123456,使用&来连接各个字段。

HTTP请求报文格式就如下图所示:

二、HTTP请求的方法

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式
HTTP1.0定义了三种请求方法: GET, POSTHEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACECONNECT 方法

方法 描述
GET 请求指定的页面信息,并返回实体主体
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报文
POST 像指定资源提交数据进行处理(例如提交表单或者上传文件),数据被包含在请求体中,POST请求可能会导致新的资源的建立或已有资源的修改
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的页面
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或者诊断

1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

注意:

  • 方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405;当服务器不认识或者不支持对应的请求方法时,应返回状态码501。
  • HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

HTTP请求报文结构和请求方法(通俗易懂)!!相关推荐

  1. 【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )

    文章目录 一.万维网概述 ★ 二.HTTP 协议 ( 超文本传输协议 ) ★ 三.HTTP 协议特点 ★ 四.HTTP 连接方式 ★ 五.HTTP 协议报文结构 六.HTTP 请求报文 ★ 七.HTT ...

  2. TCP/IP协议、请求报文和响应报文

    一.TCP/IP协议 1.计算机与网络设备相互通信 计算机与网络设备要相互通信, 双方就必须基于相同的方法. 比如:如何探测到通信目标. 由哪一边先发起通信. 使用哪种语言进行通 信. 怎样结束通信等 ...

  3. 下面哪个字段是http请求中必须具备的_HTTP 协议报文结构及示例

    HTTP 基本架构 下面我们用一张简单的流程图来展示 HTTP 协议基本架构,以便大家先有个基本的了解 Web Client 可以是浏览器.搜索引擎.机器人等等一切基于HTTP 协议发起 http 请 ...

  4. HTTP请求/响应报文结构

    HTTP请求/响应报文结构 HTTP请求报文 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据. 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它 ...

  5. 一篇让你彻底了解http请求报文和响应报文的结构

    1.序 用于HTTP协议交互的信息被称为HTTP报文.请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文.HTTP报文本身是由多行数据构成的字符串文本.HTTP报文大致可分为 ...

  6. HTTP的请求报文与响应报文

    报文: 简单来说,报文就是也就是HTTP报文,作用是在各个系统之间进行和响应时用来交换与传输的数据单元,即站点一次性要发送的数据块,这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义 ...

  7. HTTP请求报文和响应报文信息

    例子: [请求报文] GET / HTTP/1.1 Host: www.enjoytoday.cn Connection: keep-alive Upgrade-Insecure-Requests: ...

  8. 【项目学习】C++实现高并发服务器——代码学习(二)存储解析HTTP请求报文,创建响应报文

    项目来源:WebServer 上一篇:Reactor高并发模型 本文介绍以下功能的代码实现 利用标准库容器封装char,实现自动增长的缓冲区: 利用正则与状态机解析HTTP请求报文,实现处理静态资源的 ...

  9. HTTP 请求报文和响应报文包括哪些内容?

    1. 请求报文 客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端. 请求报文结构: 第一行是包含了请求方法.URL.协议版本: 接下来的多行都 ...

最新文章

  1. 获得span里面价值(在特殊情况下 )
  2. c语言编程软件出现问号,【C语言】if语句和问号表达式
  3. 和我一起作Tess的windbg lab - Lab3, Memory
  4. Mvp快速搭建商城购物车模块
  5. vue router 参数_Vue.js项目开发技术解析
  6. 【计算机领域均可投稿,确保EI检索】移动通信·信息科学热门会议即将到来!更有限时优惠等你来领!...
  7. C# textBox框实现输入像百度搜索出现下拉列表的格式
  8. 2019-06-13-vim配色步骤
  9. 工频逆变器有哪些应用?工频逆变器、高频逆变器有何区别?
  10. 电路串联和并联图解_电路的串联和并联有什么区别
  11. Linux的tomcat文件夹下没有startup.sh
  12. 51 Best DevOps Tools for #DevOps Engineers
  13. 3dvary灯光材质为什么不亮_为什么老司机都不把卤素车灯升级?听老司机说完,后悔升级了...
  14. python excel取列_Python 读取excel指定的列
  15. 如何从dump文件中提取出C#源代码学习通http://www.bdgxy.com/
  16. 解决google打开Github慢的问题,亲测有效
  17. 2021-04 提高转化-基础销量+基础销量+晒图买家秀+精心设计的问大家
  18. schema的基本使用
  19. PPP协议与WAN技术
  20. 2021爱智先行者—红外学习模块(空调遥控器)

热门文章

  1. c语言双截龙_龙吼双截龙Rage of the Dragons基本操作
  2. 腕表珠宝成为女性跨境消费新晋宠儿;爱彼迎全球约55%的新增房东为女性 | 美通企业日报...
  3. 铁乐学python_day03-作业
  4. 2021-05-11 Matlab遗传算法工具箱的使用及实例(非线性规划)
  5. FPGA控制LED流水灯
  6. 批量下载文件的设备和方法
  7. 算法----高精度(模板)
  8. 天数怎么换算成月_excel如何将天数换算为多少年多少月多少日
  9. 人品问题(树形DP)
  10. php停车场系统设计,基于PHP的停车场管理系统设计与实现