http请求正文是什么意思?

新手上路,请多包涵

在阅读有关 POST 和 get 方法 内容时,有一个声明,如“当使用 post 方法时,它使用 HTTP 请求主体。它是什么意思“HTTP 请求主体”。?

原文由 Vignesh Gopalakrishnan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 590
2 个回答

HTTP 主体数据是在 HTTP 事务消息中传输的数据字节,如果有的话,紧跟在标头之后(在 HTTP/0.9 的情况下,不传输标头)。

大多数 HTTP 请求都是没有正文的 GET 请求。但是,使用正文模拟请求对于正确强调代理代码和测试处理此类请求的各种挂钩非常重要。大多数带有正文的 HTTP 请求使用 POST 或 PUT 请求方法。

邮件正文

消息体部分对于 HTTP 消息是可选的,但如果它可用,则它用于携带与请求或响应相关联的实体体。如果实体主体是关联的,那么通常 Content-Type 和 Content-Length 标题行指定关联主体的性质。

消息体是携带实际HTTP请求数据(包括表单数据和上传数据等)和来自服务器的HTTP响应数据(包括文件、图片等)的消息体。以下是消息正文的简单内容:

 <html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

有关 HTTP 消息和正文的更多详细信息,请参阅 w3org 链接

原文由 Mazzu 发布,翻译遵循 CC BY-SA 3.0 许可协议

以下 html <form>

 <form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
  <label>Name: <input name="myTextField" value="Test"></label>
  <label><input type="checkbox" name="myCheckBox"> Check</label>
  <label>Upload file: <input type="file" name="myFile" value="test.txt"></label>
  <button>Send the file</button>
</form>

将发送此 HTTP 请求(这是一种 HTTP 消息):

 POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465

-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"

Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"

on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain

Simple file.
-----------------------------8721656041911415653955004498--

POST / HTTP/1.1Content-Length: 465 是 HTTP 标头,而其余的 - 在空行之后 - 对应于 HTTP 消息正文(也称为内容)。

那么如何在后端/服务器端访问这些数据呢?

不同的服务器语言(例如 Go-lang、Node.js、PHP…等)从 http post request 解析 http body 有不同的方法。下面的示例演示了如何在后端(Node.js 服务器)上提取数据。

 // Node.js
⋮
var data1 = req.body.myTextField;
var data2 = req.body.myCheckBox;
var data3 = req.body.myFile;
⋮

有关机构的更多信息:

机构大致可以分为两类:

  1. 单一资源主体,由一个文件组成,由两个标头定义: Content-TypeContent-Length
  2. 多资源主体,由多部分主体组成,每个主体包含不同的信息位。这通常与 HTML 表单 相关联。

资料来源:

原文由 August Jelemson 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题