http请求和响应格式说明,http的get和post请求方式说明,http的请求体body的几种数据格式

news2025/7/20 20:56:03

HTTP内容说明

请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,
请求报文的一般格式

<request-line>
<headers>
<blank line>
<request-body>

1、第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本
2、紧接着是一个请求头(header),用来说明服务器要使用的附加信息
3、紧接着是一个空行(blank line)
4、紧接着是请求体(request-body)

request请求,例如:

GET /562f25980001b1b106000338.jpg HTTP/1.1
Host    img.mukewang.com
User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept    image/webp,image/*,*/*;q=0.8
Referer    http://www.imooc.com/
Accept-Encoding    gzip, deflate, sdch
Accept-Language    zh-CN,zh;q=0.8

请求行(request line)

请求行由请求方法字段URL字段HTTP协议版本字段3个字段组成,它们用空格分隔
例如:GET /index.html HTTP/1.1

  • GET说明请求类型为GET,
  • /index.html为要访问的资源,
  • 最后一部分说明使用的是HTTP1.1版本

请求头部(header)

紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

从第二行起为请求头部,

  • HOST将指出请求的目的地.
  • User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础,该信息由你的浏览器来定义,并且在每个请求中自动发送等等

空行

即使第四部分的请求数据为空,也必须有空行。通知服务器以下不再有请求头

请求数据

请求数据不在GET方法中使用,而是在POST方法中使用,因为上面的举例中是使用的GET,所以并没有请求数据

请求数据举例

举例1

有请求数据的举例如下:
在这里插入图片描述
与请求数据相关的最常使用的请求头是

  • Content-Type:指示响应的内容,这里是text/html表示HTML网页,浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是图片

    例如:Content-Type: text/html;charset=utf-8表示响应类型是HTML文本,并且编码是UTF-8,Content-Type: image/jpeg表示响应类型是JPEG格式的图片;

  • Content-Length。

举例2

POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。

响应报文

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

<status-line>
<headers>
<blank line>
[<response-body>]

1、第一行必须是一个状态行(status-line)
2、紧接着是一个响应头(header)
3、紧接着是一个空行(blank line)
4、紧接着是响应体(response-body)

response响应举例如下:

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>

状态行(status-line)

状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成
第一行为状态行,

  1. (HTTP/1.1)表明HTTP版本为1.1版本,
  2. 状态码为200,
  3. 状态消息为(ok)

消息报头(header)

第二行和第三行为消息报头,

  1. Date:生成响应的日期和时间;
  2. Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

空行(blank line)

消息报头后面的空行是必须的

响应正文(response-body)

空行后面的html部分为响应正文。

HTTP请求方式

GET

GET /test/?!name=Professional?abc!&publisher=?abc HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: 127.0.0.1
Connection: Keep-Alive

注意最后一行是空行

说明:

  1. 第1部分是请求行,说明了该请求是一个GET请求。该行的第二部分,用来说明请求的是什么,该行的最后一部分说明使用的是HTTP1.1版本。
  2. 第2部分请求头,HOST将指出请求的目的地,User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础。该信息由你的浏览器来定义,并且在每个请求中自动发送,Connection通常将浏览器操作设置为Keep-Alive,而没有响应后立即close这个连接。
  3. 第3部分是空行,即使不存在请求主体,这个空行也是必需的。

GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接

如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

POST

POST /text.html HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional?abc!%20Ajax&publisher=?abc!

把提交的数据放置在是HTTP包的包体中

说明:

  1. 请求行开始处的GET改为POST,以表示不同的请求类型。
  2. Content-Type说明了请求主体的内容是如何编码的,浏览器始终以application/x-www-form-urlencoded的格式编码来传送数据,这是针对简单URL编码的MIME类型.Content-Length说明了请求主体的字节数。
  3. 最后请求主体.名称-值对的形式

区别

GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如上. POST方法是把提交的数据放在HTTP包的Body中.

GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

http的请求体body的几种数据格式

multipart/form-data

以表单形式提交,主要是上传文件用它
在这里插入图片描述

application/x-www-from-urlencoded

以键值对的数据格式提交
在这里插入图片描述

raw

选择text,则请求头是: text/plain
选择javascript,则请求头是: application/javascript
选择json,则请求头是: application/json (如果想以json格式传参,就用raw+json就行了)
选择html,则请求头是: text/html
选择application/xml,则请求头是: application/xml

在这里插入图片描述

binary

相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。

在这里插入图片描述

postman中 Params和Body的区别

Params 它会将参数放入url的?后面提交到后台(带到请求的接口链接里)

Body是放在请求体里面
在这里插入图片描述

参考:https://www.cnblogs.com/ranyonsue/p/5984001.html

参考2:https://blog.csdn.net/qq_41063141/article/details/101505956

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Firefly RK3399 PC pro开发板资料

一. 基本介绍 产品介绍&#xff1a;Firefly | 让科技更简单&#xff0c;让生活更智能开发板规格书&#xff1a;https://download.t-firefly.com/product/Board/RK3399/Document/Hardware/ROC-RK3399-PC%20Pro/Specification/ROC-RK3399-PC%20Pro%20%E4%BA%A7%E5%93%81%E8%A7%84…

AES实现接口的安全性

文章目录Maven项目结构图引入依赖AESUtilsEnDecryptUtilEncryptPropertiesEncryptAutoConfigurationspring.factories打成jar包&#xff0c;供其他项目 / 人使用打成jar 包导入 jar 包测试application.yamlUser类HelloController 测试代码地址&#xff1a; 链接&#xff1a;htt…

深入理解java虚拟机:类文件结构(1)

文章目录1. 概述2. Class类文件的结构2.1 魔数与Class文件的版本2.2 常量池2.3 访问标志2.4 类索引、父类索引与接口索引集合2.5 字段表集合1. 概述 如果计算机的CPU指令集就只有x86一种&#xff0c;操作系统就只有Windows一种&#xff0c;那也许就不会有Java语言的出现。Java…

云原生:容器与微服务

目录 一、虚拟化与容器 1.1 虚拟机 1.2 容器 1.3 Docker 1.4 Docker代码示例 二、微服务 2.1 微服务的概念 2.2 微服务的特点 三、为什么使用微服务 3.1 微服务的优缺点 3.2 云原生的支持服务 云原生技术使组织能够在新式动态环境&#xff08;如公有云、私有云和混…

攻防世界-pwnCTFM-Off_By_one漏洞与Tcachebin绕过

攻防世界-pwnCTFM-Off_By_one漏洞与Tcachebin绕过 保护机制 healerhealer-virtual-machine:~/Desktop/pwnCTFM/attachments$ checksec pwn [*] /home/healer/Desktop/pwnCTFM/attachments/pwnArch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: …

线性判别分析(机器学习)

目录 线性判别分析的原理 LDA的降维过程如下 线性判别分析&#xff08;LDA&#xff09; 是一种有监督的线性降维算法。 与PCA不同&#xff0c;LDA是为了使降维后的数据点尽可能地容易被区分 线性判别分析的原理 线性判别分析是对于给定的训练集&#xff0c;设法将样本投影到…

基于HTML+CSS+JavaScript+Bootstarp响应式健身网站(web前端期末大作业)

网站题目> &#x1f3c0;校园篮球网页设计、⚽足球体育运动、&#x1f93d;体育游泳运动、&#x1f3d3;兵乓球 、&#x1f3be;网球、等网站的设计与制作。 二、✍️网站描述> &#x1f3f7;️ 大学生校园运动静态HTML网页设计作品&#xff0c;采用DIV CSS布局制作&am…

数据结构体进阶链表【带头双向循环链表,单向链表的优化,从根部解决了顺序表的缺点】一文带你深入理解链表

前言&#xff1a; 对于链表&#xff0c;上一篇的单链表解决了顺序表的一部分缺陷&#xff0c;但并没有彻底的解决顺序表的问题&#xff0c;比如在进行单链表尾插尾删的时候还是需要进行遍历找尾&#xff0c;并没有达到全部的O(1)&#xff0c;并且在头插的时候还要分情况来考虑&…

【ASM】字节码操作 工具类与常用类 AdviceAdapter 介绍 打印方法进入 和 方法退出 的参数

文章目录 1.概述2. AdviceAdapter类2.1 class info2.2 fields2.3 constructors2. 4 methods2.案例2.1 打印方法参数3.总结1.概述 在上一篇文章:【ASM】字节码操作 工具类与常用类 Printer、ASMifier、Textifier 介绍 我们简单的介绍了 Printer、ASMifier、Textifier 三个类的…

idea2021版本创建一个javaweb项目(含额外知识--添加tomcat相关jar包)

前言&#xff1a; 建立一个javaweb项目需要用到JDK、idea、Tomcat 1. JDK是11版本的 2.IDEA是2021版本的 3.Tomcat是8.5版本的 这些下载在我的其他文章里面也有讲到下载和应用&#xff0c;大致都是殊途同归的 一、打开ided&#xff0c;按照以下步骤点击创建一个工程项目…

X11 Xlib截屏代码所遇问题及初步分析

综合了两篇博客中的例程并做一定修改&#xff0c;得到了基于X11 Xlib的截屏代码。 两篇博客链接分别如下&#xff1a; X11 截图与鼠标事件-SkyMei777-ChinaUnix博客 xlib实现截图报错-编程语言-CSDN问答 C代码如下&#xff1a; #include <stdio.h> #include <std…

[附源码]SSM计算机毕业设计自治小区物业设备维护管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

TK选品技巧 | 听说TikTok畅销品都是这样来的

9月16日消息&#xff0c;TikTok Shop发布东南亚99大促战报&#xff0c;此次战报数据包含了马来西亚、新加坡、菲律宾、越南和泰国五国销售数据&#xff0c;战报显示&#xff0c;此次东南亚99大促总GMV增幅达156%&#xff0c;总live GPM增幅达130%&#xff0c;订单量增幅达128%&…

基于springboot的社区疫情管理系统源码

1、项目介绍 基于springboot的社区疫情管理系统拥有三种角色&#xff1a;超级管理员、普通管理员、用户 超级管理员&#xff1a;管理员和用户管理、人员检测信息管理、外来人员报备管理、防疫须知管理、疫情用品类型管理、疫情用品管理、订单管理、评论管理、审核外来人员、新…

【ML-SVM案例学习】案例一:对鸢尾花数据进行SVM分类(附源码)

文章目录前言一、完整源码分步实现1.引入库2.读入数据3.编码数据4.数据分割5.数据SVM分类器构建6.计算模型的准确率/精度7.计算决策函数的结构值以及预测值8.画图总结前言 【ML-SVM案例学习】会有十种SVM案例&#xff0c;供大家用来学习。本章实现SVM鸢尾花数据的分类任务。 一…

PDF能编辑修改吗?教你必备的几种编辑方法

可以把PDF文件编辑修改吗&#xff1f;相信这是很多萌新在刚接触PDF文件时所产生的疑惑&#xff0c;因为在想要改动PDF文件的时候&#xff0c;发现无法直接编辑内容&#xff0c;就会有PDF文件可以编辑吗的疑问了&#xff0c;其实有这种想法非常正常&#xff0c;大家都是经历过的…

【设计模式】单例模式

单例模式属于创建型模式&#xff0c;是最简单的一种设计模式。当一个类在程序中只需要创建唯一全局对象时&#xff08;如网站计数类、日志管理类、线程池类……&#xff09;&#xff0c;就可以使用单例模式。单例模式规定一个类只能创建一个实例&#xff0c;之后不能再创建新的…

Verilog语法

Verilog语法 Verilog简介 Verilog是一种硬件描述语言&#xff0c;以文本形式来描述数字系统硬件的结构和行为的语言&#xff0c;用它可以表示逻辑电路图、逻辑表达式&#xff0c;还可以表示数字逻辑系统所完成的逻辑功能。 Verilog 和 C 的区别&#xff1a; Verilog是硬件描…

Linux篇【5】:Linux 进程概念(二)

目录 3.5、查看进程 3.6、通过系统调用接口获取时实进程的标识符 3.7、通过系统调用接口创建子进程 - fork 初识 3.5、查看进程 [HJMhjmlcc ~]$ clear [HJMhjmlcc ~]$ pwd /home/HJM [HJMhjmlcc ~]$ ls [HJMhjmlcc ~]$ touch mytest.c [HJMhjmlcc ~]$ ls mytest.c [HJMhjml…

G1D16-fraud-SVM

早上复习了一下昨天学的内容&#xff0c;发现这零碎时间用来复习&#xff0c;真的很不错。 但是遇到了一个问题&#xff1a;知识推理和知识挖掘有什么区别&#xff1f; 知识规则挖掘是对知识结构的挖掘&#xff0c;可以针对现有的知识体系&#xff0c; 利用部分规则&#xff0…