什么是原始发布数据

时间:2012-08-30 10:24:52

标签: php

我正在尝试理解原始帖子数据的含义。 $HTTP_RAW_POST_DATA的PHP手册页只是说明此变量包含Raw POST data

何时设置此变量以及原始发布数据的含义是什么?

我理解$_POST,但与$HTTP_RAW_POST_DATA

完全混淆

5 个答案:

答案 0 :(得分:12)

HTTP请求由两部分组成。一组标题和正文。

标题包括所请求的URL和缓存控制助手之类的内容(例如“我昨天有这个版本,如果有更改,只给我一个新版本,好吗?”)。

根据请求的类型,可能会出现或不出现正文。 POST请求有正文。

身体可以是客户喜欢的任何格式。其中一个标题将告诉服务器格式是什么。

HTML表单使用了几种格式,PHP知道如何解析这些格式并将数据放入$_POST

如果数据是另一种格式,例如JSON,或者数据不符合PHP的怪癖(例如在同名的键末尾有[]的规则),那么你可能想直接访问数据,以便您自己解析。

这是原始的POST数据。

答案 1 :(得分:4)

在分割$_POST之后,

$HTTP_RAW_POST_DATA可以说是和结果,php以我们在$_POST中看到的方式分割原始帖子数据和格式例如:

  

$HTTP_RAW_POST_DATA看起来像这样

key1=value1&key2=value2
  

然后$_POST看起来像这样:

$_POST = array(
    "key1" => "value1",
    "key2" => "value2",);

答案 2 :(得分:1)

HTTP是基于文本的协议,因此所有数据都作为字符串传递。当您使用$_POST时 - 您已经处理了传递的数据,以使您处于数组形式。这是在控件传递给您的脚本之前自动完成的。

因此,在原始发布数据中,有一个数据通过网络传递。

您可能会看到a=1&b=2数据,就像您在网址中看到的那样

答案 3 :(得分:1)

使用http协议可以做的一件事就是执行POST请求,将一些文本发送回服务器。

$HTTP_RAW_POST_DATA将包含该文字,无论它说什么。

大多数情况下,当我们发出POST请求时,我们会在发送的文本中添加“内容类型”。这告诉服务器它是什么类型的内容。我们大多数时间都在网络上发送内容类型为'application / x-www-form-urlencoded'。

当服务器收到带有此内容类型标记的POST请求时,服务器将知道尝试将数据转换为$_POST数组,以便“test = hello”变为:

$_POST['test']='hello'

答案 4 :(得分:0)

$HTTP_RAW_POST_DATA包含原始POST数据,如下所示:

  • 文本
  • JS​​ON
  • XML
  • HTML

通常,应使用php://input代替$HTTP_RAW_POST_DATA.,因为此功能自PHP 5.6.0起已被弃用。非常不鼓励依赖此功能。

来源:php.net - $HTTP_RAW_POST_DATA