$ HTTP_RAW_POST_DATA的用法

时间:2017-04-20 12:03:42

标签: php web-services nusoap

我正在搜索这个的确切定义,但仍然无法找到满意的定义。 我正在使用nusoap webservice,有一行

$server->service($HTTP_RAW_POST_DATA);

任何人都可以告诉我这里$ HTTP_RAW_POST_DATA的目的是什么。 根据我的研究,它用于收集原始的帖子数据。但我不满意答案。原始帖子数据的确切含义是什么。

3 个答案:

答案 0 :(得分:2)

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

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

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

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

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

如果数据采用其他格式,例如JSON,或者数据不符合PHP的怪癖(例如,在具有相同名称的键末尾有[]的规则)然后你可能想直接访问数据,这样你就可以自己解析它。这是原始的POST数据。

  • $_POST包含发布到您脚本的URL编码(应用程序/ www-url编码)变量,PHP会为您解码它们。在处理HTML FORM数据时使用此文件。

  • file_get_contents("php://input") - 获取原始POST数据,您需要在编写API时使用此数据,并且需要XML无法解码为$ _POST的XML / JSON / ...输入。

  • $HTTP_RAW_POST_DATA - 理论上它与上面相同,但取决于php.ini。并且在PHP 7中不再可用

答案 1 :(得分:0)

HTTP消息由一系列标题和正文组成(根据标题可以是必需/可选/禁止的。)

对于网址http://stackoverflow.com/questions/43519007/usage-of-http-raw-post-data,正文是用于生成您正在阅读的文档的HTML。

如果您提出GET请求,则没有请求正文。

如果您发出POST请求,那么就会有。如果您提交表单,则会使用您可以使用enctype属性指定的格式之一对其进行编码。

通常情况下,在PHP中,当您想要使用该数据时,您可以使用$_POST包含解码主体后的内容。

原始身体是之前已解码。

答案 2 :(得分:0)

大多数情况下,当我们处理HTTP POST请求时,我们会查看浏览器提交表单的结果。这将以标准方式(“查询字符串编码”或“multipart / form-data”)格式化数据,该方式编码一组键值对。 PHP会自动将此格式的任何请求解析为超全局数组$_POST

但是,实际的HTTP请求正文只是一段文本,在某些情况下我们希望将其视为一段文本。例如,SOAP请求使用XML文档作为POST请求的主体。 $HTTP_RAW_POST_DATA允许您访问此文本 - 它是“原始的”,因为它尚未处理,它只是作为字符串返回给您。

值得注意的是$HTTP_RAW_POST_DATA是一种方式来访问它,并且在较新版本的PHP中使用file_get_contents('php://input');的正确方法是php://input是一个表示相同原始数据的虚拟文件。