-
2021-07-12 21:59:55
HTTP请求报文:
HTTP请求报文由3部分组成(请求行+请求头+请求体):
请求行:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。
请求头:
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
在Java中用@RequestParam进行接收
与缓存相关的规则信息,均包含在header中。
在Java中用@RequestParan接收。
请求体:
⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。
在Java中用@RequestBody接收,一般发送的是Json到后端。更多相关内容 -
请求json格式
2018-06-21 15:27:39Json标准格式Json标准格式Json标准格式Json标准格式Json标准格式Json标准格式Json标准格式 -
http请求报文与响应报文
2020-11-02 19:00:291. http get请求报文 ----请求行----- GET / HTTP/1.1 => 请求方法(方式) 请求的资源路径 http协议的版本 ----请求头---- Host: www.baidu.com => 服务器的主机ip地址和端口号,提示如果看不到端口号默认是80...https://blog.csdn.net/weixin_45912307/article/details/109454522
1. http get请求报文
----请求行----- GET / HTTP/1.1 => 请求方法(方式) 请求的资源路径 http协议的版本 ----请求头---- Host: www.baidu.com => 服务器的主机ip地址和端口号,提示如果看不到端口号默认是80 Connection: keep-alive => 和服务端程序保存长连接,当客户端和服务端有一段时间(3-5)没有进行通信,那么服务器程序会主动向客户端断开连接 Upgrade-Insecure-Requests: 1 => 让客户端升级不安全请求,以后要使用https User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 => 用户代理,客户端程序名称,可以根据是否有User-Agent进行反爬机制 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 => 告诉服务端程序可以接受的数据类型 Accept-Encoding: gzip, deflate => 告诉服务端程序支持的压缩算法 Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 => 告诉服务端程序支持的语言 Cookie: UM_distinctid=169f06ab9d21a-0a52d93224ce3-12376d57-13c680-169f06ab9d571a; accessId=22bdcd10-6250-11e8-917f-9fb8db4dc43c; bad_id22bdcd10-6250-11e8-917f-9fb8db4dc43c=5c8a5a11-5811-11e9-975d-5932d6370ce7; parent_qimo_sid_22bdcd10-6250-11e8-917f-9fb8db4dc43c=69928890-5811-11e9-ac5b-eb2506ccad9a; CNZZDATA4617777=cnzz_eid%3D324231225-1554516145-%26ntime%3D1554521548; href=http%3A%2F%2Fwww.baidu.com%2F; pageViewNum=5; Hm_lvt_0cb375a2e834821b74efffa6c71ee607=1554516722,1554523431; Hm_lpvt_0cb375a2e834821b74efffa6c71ee607=1554523431; nice_id22bdcd10-6250-11e8-917f-9fb8db4dc43c=fc5f90f1-5820-11e9-b896-dba72e2578c0; openChat22bdcd10-6250-11e8-917f-9fb8db4dc43c=true => 客户端用户身份的标识 -----空行----- \r\n
2. http get请求的原始报文数据
----请求行----- GET / HTTP/1.1\r\n ----请求头---- Host: www.baidu.com\r\n Connection: keep-alive\r\n Upgrade-Insecure-Requests: 1\r\n User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3\r\n Accept-Encoding: gzip, deflate\r\n Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n Cookie: UM_distinctid=169f06ab9d21a-0a52d93224ce3-12376d57-13c680-169f06ab9d571a; accessId=22bdcd10-6250-11e8-917f-9fb8db4dc43c; bad_id22bdcd10-6250-11e8-917f-9fb8db4dc43c=5c8a5a11-5811-11e9-975d-5932d6370ce7; parent_qimo_sid_22bdcd10-6250-11e8-917f-9fb8db4dc43c=69928890-5811-11e9-ac5b-eb2506ccad9a; CNZZDATA4617777=cnzz_eid%3D324231225-1554516145-%26ntime%3D1554521548; href=http%3A%2F%2Fwww.baidu.com%2F; pageViewNum=5; Hm_lvt_0cb375a2e834821b74efffa6c71ee607=1554516722,1554523431; Hm_lpvt_0cb375a2e834821b74efffa6c71ee607=1554523431; nice_id22bdcd10-6250-11e8-917f-9fb8db4dc43c=fc5f90f1-5820-11e9-b896-dba72e2578c0; openChat22bdcd10-6250-11e8-917f-9fb8db4dc43c=true\r\n -----空行----- \r\n
3. http get请求报文的格式
请求行\r\n 请求头\r\n 空行(\r\n) 提示: 每项信息之间都需要一个\r\n,是由http协议规定
4. http post请求报文的格式
请求行\r\n 请求头\r\n 空行(\r\n) 请求体 提示: 请求体就是浏览器发送给服务器的数据
5. http 响应报文解析
---- 响应行(状态行) -------- HTTP/1.1 200 OK => http协议版本 状态码 状态描述 ---- 响应头 ---------- Server: Tengine => 服务器的名称 Content-Type: text/html; charset=UTF-8 => 服务器发送给浏览器的内容类型及编码格式 Transfer-Encoding: chunked => 服务器发送给客户端程序(浏览器)的数据不确定数据长度, 数据发送结束的接收标识: 0\r\n,Content-Length: 200(字节),服务器发送给客户端程序的数据确定长度。 内容长度这两个选项只能二选一 Connection: keep-alive => 和客户端保持长连接 Date: Sat, 06 Apr 2019 08:49:57 GMT => 服务器的时间 --- 以下都是自定义响应头信息,自己定义响应头的名字和响应头的值,比如: is_login: True Accept-Ranges: bytes Ali-Swift-Global-Savetime: 1554540597 Via: cache45.l2nu29-1[3,200-0,M], cache11.l2nu29-1[4,0], kunlun2.cn249[30,200-0,M], kunlun2.cn249[33,0] X-Cache: MISS TCP_MISS dirn:-2:-2 X-Swift-SaveTime: Sat, 06 Apr 2019 08:49:57 GMT X-Swift-CacheTime: 0 Timing-Allow-Origin: * EagleId: 2a51041615545405973986157e ----- 空行 ---- \r\n ----- 响应体 真正意义上给浏览器解析使用的数据---- 网页数据 提示: 对于请求头和响应头信息程序员都可以进行自定义,按照客户端和服务器约定好的方式来制定即可。
6. http 响应原始报文数据
---- 响应行(状态行) -------- HTTP/1.1 200 OK\r\n ---- 响应头 ------ Server: Tengine\r\n Content-Type: text/html; charset=UTF-8\r\n Transfer-Encoding: chunked\r\n Connection: keep-alive\r\n Date: Sat, 06 Apr 2019 08:49:57 GMT\r\n --- 以下都是自定义响应头信息,字节定义响应头的名字和响应头的值,比如: is_login: True Accept-Ranges: bytes\r\n Ali-Swift-Global-Savetime: 1554540597\r\n Via: cache45.l2nu29-1[3,200-0,M], cache11.l2nu29-1[4,0], kunlun2.cn249[30,200-0,M], kunlun2.cn249[33,0]\r\n X-Cache: MISS TCP_MISS dirn:-2:-2\r\n X-Swift-SaveTime: Sat, 06 Apr 2019 08:49:57 GMT\r\n X-Swift-CacheTime: 0\r\n Timing-Allow-Origin: *\r\n EagleId: 2a51041615545405973986157e\r\n ----- 空行 ---- \r\n ----- 响应体 就是真正意义上给浏览器解析使用的数据----- 网页数据
7. http响应报文的格式
响应行\r\n 响应头\r\n 空行\r\n 响应体\r\n 提示: 每项信息之间都要有一个\r\n进行分割
8. 请求头携带的参数:
cookie、token、content-type、Authorization、user-agent
9. 常见的 POST 提交数据方式
主要有四种方式:
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- text/xml
10. 发送post请求
import requests # Parameters参数体 data = { "username": "admin666", "password": "123456"} res = requests.request("post", URL, data=data) # 发送请求时,使用data传Parameters参数体print(f"res:{res}") # JSON参数体 token = res.json()["data"]["ticketString"] headers = { "token": token, "Content-Type": "application/json" } data = { "page": 1, "pageSize": 15} res1 = requests.request("post", URL, headers=headers, json=data) # 发送请求时,使用json传Parameters参数体,使用headers传请求头print(f"res1:{res1}")
11. json与字典间互转
import json json.dumps():将字典转换为JSON格式的字符串 json.loads():将JSON格式的字符串转化为字典 json.dump():将字典转换为JSON格式的字符串,并将转化后的结果写入文件 json.load():从文件读取JSON格式的字符串,并将其转化为字典
-
459_J1939请求报文格式分析与代码印证
2020-11-21 11:09:50这次来小结一下请求报文的发送,因为响应部分暂时有一点点模糊没看明白,还需要补充一点文档信息。 关于请求报文,我参考了恒润的一份PPT中的一页,这...这是一个固定的报文格式,填充一个PGN的信息即可。而请求...全部学习汇总: https://github.com/GreyZhang/J1939_basic
这次来小结一下请求报文的发送,因为响应部分暂时有一点点模糊没看明白,还需要补充一点文档信息。
关于请求报文,我参考了恒润的一份PPT中的一页,这个在很多文库能够看得到。具体部分据图如下:
从这份PPT中的信息看,其实请求报文还是很简单的一个东西。至少,请求的动作还是很简单的。这是一个固定的报文格式,填充一个PGN的信息即可。而请求发送的目标地址可以是全局地址,也可以是指定的地址。
接下来,结合我找到的一份代码看一下代码的处理。
其实,跟上面的表格吻合度还是很高的。
首先,PF是234,PGN也就是59904。优先级经过查看,也是3。数据长度是3,请求的PGN是发送机转速的一个PGN。这里没有源地址信息,其实是不需要。因为报文的发送功能中会自动的组装添加这样的信息。
上面是组装信息,源地址在这里被自动组装到了报文当中。而这个就是请求报文的发送过程,至于响应我还没有把例程调试通过也没有做分析,还是有一点存疑。其实,我自己存疑的地方有两个:第一个是响应报文是不是回复到源地址?或者是全局地址?第二个疑问是,请求的PGN有没有可能不仅是一帧报文,存在多帧的情况?按照现在比较直觉的想法,可能是发送给特定地址,也就是请求报文的源地址,否则的话网络传输代价太高,毕竟消耗了更多节点的处理工作。而多帧报文,或许是没有的吧?
现在对J1939的了解的确是还很肤浅,但是随着我不断的丰富细节,我相信这个骨架肯定会逐渐被我描绘清楚的。
初步调试的一个例程,发送出来的报文请求如下:
这里是两次请求发出来的信息,从报文信息看是0x81请求0x80发送0x00F004的PGN信息。
之前,J1939其实我也花过不少时间。但是都是突击性为别人修修补补,希望这次的学习能够有一个系统性的掌握吧!
-
面试官:说一下Http请求的报文格式及常用状态码
2019-03-04 19:26:44介绍 http协议详解 ...请求报文格式 为了理解的更清楚,我用Wireshark抓包来看看到底表现形式是啥(\r\n是换行) 其中GET / HTTP/1.1是请求行。 由3个部分组成 1.请求方法(GET) 2.请求目标,...介绍
http协议详解
http协议我们应该再熟悉不过,毕竟我们每天都使用浏览器。http协议是基于tcp协议的。所以进行http通信前要建立tcp/ip的连接。
http请求报文和响应报文的格式
请求报文格式
为了理解的更清楚,我用Wireshark抓包来看看到底表现形式是啥(\r\n是换行)
其中GET / HTTP/1.1是请求行。由3个部分组成
- 请求方法(GET)
- 请求目标,通常是一个URI(/)
- 版本号(HTTP/1.1)
响应报文格式
为了更深入理解,同样抓包看一下。
其中HTTP/1.1 304 Not Modified是状态行由3个部分组成
- 版本号(HTTP/1.1)
- 状态码(304)
- 数字状态码补充,原因描述(Not Modified)
常用的头部字段
我举几个例子,你就能看懂大部分的首部字段。
看上面请求头例子,有一个为Accept,类似如下Accept: text/html,application/xml
这表明客户端通过type/subtype的形式告诉服务端,我可以接收哪些文本类型
常见有的text/html 文本 image/gif、image/jpeg、image/png 图片 video/mp4 音视频 application 数据格式不固定,由上层应用解释,如application/json,application/pdf等
Accept-Encoding客户端支持的压缩格式,gzip、deflate
服务端对应的属性为Content-Encoding,如下表明服务端使用的是gzip这种压缩方式Content-Encoding: gzip
客户端能识别的语言为
Accept-Language: zh-CN, zh, en
服务端返回的语言为
Content-Language: zh-CN
解释完毕,还是很好理解的吧
常见的首部如下:
通用首部字段(请求报文与响应报文都会使用的首部字段)
Date:创建报文时间
Connection:连接的管理
Cache-Control:缓存的控制
Transfer-Encoding:报文主体的传输编码方式请求首部字段(请求报文会使用的首部字段)
Host:请求资源所在服务器
Accept:可处理的媒体类型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的内容编码
Accept-Language:可接受的自然语言响应首部字段(响应报文会使用的首部字段)
Accept-Ranges:可接受的字节范围
Location:令客户端重新定向到的URI
Server:HTTP服务器的安装信息实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)
Allow:资源可支持的HTTP方法
Content-Type:实体主类的类型
Content-Encoding:实体主体适用的编码方式
Content-Language:实体主体的自然语言
Content-Length:实体主体的的字节数
Content-Range:实体主体的位置范围,一般用于发出部分请求时使用状态码的类别
状态码对识别错误非常有用,所以也经常被问到,总结如下
类别 原因短语 1XX (信息性状态码) 收到的请求正在处理 2XX (成功状态码) 请求正常处理完毕 3XX (重定向状态码) 需要进行附加操作已完成请求 4XX (客户端错误状态码) 服务器无法处理请求 5XX (服务器错误状态码) 服务器处理请求出错 2XX 成功:
状态码 英文 解释 200 OK 表示从客户端发来的请求在服务器端被正确处理 204 No content 表示请求成功,但响应报文不含实体的主体部分 206 Partial Content 进行范围请求 3XX 重定向: 状态码 英文 解释 301 moved permanently 永久性重定向,表示资源已被分配了新的 URL 302 found 临时性重定向,表示资源临时被分配了新的URL 303 see other 表示资源存在着另一个 URL,应使用 GET 方法定向获取资源 304 not modified 表示服务器允许访问资源,但因发生请求未满足条件的情况 307 temporary redirect 临时重定向,和302含义相同 4XX 客户端错误:
状态码 英文 解释 400 bad request 请求报文存在语法错误 401 unauthorized 表示发送的请求需要有通过HTTP认证的认证信息 403 forbidden 表示对请求资源的访问被服务器拒绝 404 not found 表示在服务器上没有找到请求的资源 5XX 服务器错误:
状态码 英文 解释 500 internal sever error 表示服务器在执行请求时发生了错误 502 网关错误 503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求 504 网关超时 参考博客
[1]https://juejin.im/post/5872309261ff4b005c4580d4
[2]https://juejin.im/post/586cfcf8da2f600055ce8a8d
大佬文章
[3]http://showme.codes/
相关面试题
[4]https://blog.csdn.net/zhangliangzi/article/details/51336564
[5]https://juejin.im/post/5a8102e0f265da4e710f5910
HTTP常见的状态码
[6]https://www.cnblogs.com/hjxcode/p/5663830.html
类似403,404,503等状态码HTTP状态码(HTTP Status Code)
[7]https://blog.csdn.net/yumon321/article/details/78597481 -
HTTP报文之"请求报文"和"响应报文"详解
2020-04-28 19:15:25本文详细介绍了Http报文之"请求报文"和"响应报文",欢迎阅读 ,一起进步。 Hope this article can really let you know the request message and response message. 文章目录一、报文序言二、请求报文三、响应报文... -
HTTP 请求报文、响应报文格式详解
2018-02-27 11:34:02HTTP请求报文格式:图片只做参考HTTP请求报文主要由请求行、请求头部、请求正文(附属体)3部分组成1,请求行由3部分组成,分别为:请求方法、URL(见备注1)以及协议版本,之间由空格分隔请求方法包括GET、HEAD、PUT... -
HTTP报文-请求报文和响应报文
2022-05-07 20:17:01报文流 HTTP报文是在HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头。 报文的组成部分 对报文进行描述的起始行 ...请求报文的格式: <method> <re... -
详讲OneNET HTTP请求、响应报文格式
2019-08-19 15:48:42在我之前的一篇博客:基于RT-Thread的AT device实现ESP8266 通过socket对接OneNET进行POST和GET 中,使用了RT-Thread的AT device...本章将着重讲解如果使用socket来分装HTTP协议的POST和GET。 一、socket的常用接... -
UDP 协议报文格式
2022-01-03 10:52:06UDP 协议格式 每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分 报头由 4 个 16 位长(2 字节) 字段组成,分别说明该报文的源端口、目的端口、报文长度和校验值 UDP 报文中每个字段的含义: 源端口: 操作系统自动... -
通过 Chrome浏览器 查看http请求报文
2021-08-05 07:04:53as we all know HTTP 请求报文 包含请求行、请求头和请求体三部分请求行:(请求方式 资源路径 协议/版本)例如:POST /test/index.html HTTP/1.1PS:各部分以空格隔开以 MAC Chrome浏览器为例:① 进入开发者工具 ... -
HTTP协议报文格式
2018-05-24 20:52:05HTTP报文有两种:请求报文,响应报文。请求报文GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpe... -
Qt之Http:2 请求报文介绍
2021-05-31 16:01:36文章目录1、请求报文1.1 请求行1.1.1 请求方法1.1.2 请求资源1.1.3 请求协议1.2 请求首部1.3 通用首部字段1.4 实体首部2、试验2.1 架设http服务器2.2 win10 安装telnet2.3 GET 请求 实验环境: window环境下使用... -
HTTP请求方式和报文解析
2018-09-01 17:54:25一、概述 ... HTTP请求方式和报文解析 Cookie 和 Session的理解与使用 HTTP Cache缓存机制 封装网络请求 TCP 和 Socket 二、HTTP请求方式 HTTP提供了七种请求方式:GET、POST、DELETE、PUT、H... -
HTTP请求报文和HTTP响应报文 -- JAVA 基础
2017-10-04 13:45:42HTTP报文是面向文本的,报文中的每一个...一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。or<request-line><headers>[<request-bo -
HTTP请求报文格式
2009-05-06 19:49:00佟强 http://blog.csdn.net/microtong OakCMS内容管理系统 http://www.oakcms.cn http://www.oakcms.netHTTP报文是面向文本的,报文中的每一个字段都是一些...请求报文一个HTTP请求报文由请求行(request line)、请 -
HTTP的通信过程及请求报文和响应报文(详解)
2019-07-27 10:18:52掌握HTTP的通信过程以及请求报文和响应报文 一、首先我们先来了解一下HTTP协议: HTTP协议(超文本传输协议):是浏览器和Web服务器之间进行数据通信的格式,也就是说如果想要实现浏览器和Web服务器之间的通信就需要... -
soap报文格式
2021-09-18 17:53:30soap报文格式 ... -
HTTP POST请求报文格式分析与Java实现文件上传
2015-12-22 17:57:14HTTP POST请求报文格式分析与Java实现文件上传 时间 2014-12-11 12:41:43 CSDN博客 原文 http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTP HttpComponents 在开发中,... -
HTTP协议请求与回应报文格式总结
2017-10-12 15:03:54什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则...格式: request(请求) 请求方式 请求资源 请求协议、请求协议版本(request_method request-uri request-protocol reques -
HTTP 请求报文
2021-07-12 10:43:101. HTTP 请求报文介绍 ...【HTTP请求报文:浏览器发送给服务器的格式;浏览器发送给web服务器程序的数据,如http协议数据】 【post比get安全】 2. HTTP GET 请求报文分析 HTTP GET 请求报文效果图: ... -
ICMP报文格式解析
2021-09-24 11:36:26ICMP报文的格式类型总共分为三大类: 1、差错报文 2、控制报文 3、查询报文 上图是ICMP报文的基本格式,上面提到的三种ICMP报文均有“类型,代码和校验和”三个字段,后面还有4个字节是根据不同的报文类型而有... -
http请求报文详解
2018-11-04 16:10:27如果每个请求都按照自己的意愿发送有个性的请求,显然,服务器是要崩溃的,因为,它忙不过来嘛,于是,聪明的人类坐在一起商量了一下,仔细的指定了请求的方式和服务器应答的方式,这就是大家耳熟能详的http协议。... -
TCP报文格式详解
2021-07-13 12:40:09TCP报文由俩部分组成:TCP报头和TCP数据 TCP报文是TCP传输的数据单元 端口号:用来标识一台主机的不同进程 1) 源端端口号:源端口和IP层解析出来的IP地址标识报文的发送地,同时也确定了报文的返回地址 2) 对端端... -
JAVA 实现HTTP POST请求报文格式分析
2015-03-05 10:04:31而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也比较容易出错。今天我们就一起来学习HTTP POST的报文格式以及通过Java来模拟文件上传的请求。 首先... -
http请求报文及响应报文
2017-04-09 16:27:36一、HTTP报文格式 HTTP报文分为两类:请求报文request, 响应报文response 二、HTTP请求报文: ASCII文本 (易于人读格式) GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 //... -
ICMP----ping报文格式
2021-09-22 10:28:38报文整体 ETH头+IP头+ICMP信息 在IP头内有字段表示下面是ICMP信息。 IP头 ICMP信息 参考 https://datatracker.ietf.org/doc/html/rfc792 https://blog.csdn.net/chen1415886044/article/details/110356022 -
ICMP报文格式详解
2015-07-26 12:33:032 ICMP报文的类型 3 ICMP地址掩请求与应答 4 ICMP时间戳请求与应答 5 ICMP端口不可达差错 1 引言 ICMP经常被认为是IP层的一个组成部分。它传递差错以及其他需要注意的信息。ICMP报文通常被IP层或更层协议... -
HTTP请求报文和响应报文
2016-11-03 17:15:00HTTP报文