我正在搜索此的确切定义,但我仍然找不到令人满意的定义。
我正在使用Nusoap Web服务,并且有一行,
$server->service($HTTP_RAW_POST_DATA);
$ http_raw_post_data的目的是什么?
根据我的研究,它是用于收集原始帖子数据,但我对答案不满意。原始帖子数据的确切含义是什么?
HTTP请求由两个部分组成。一组标头和一个身体。
标题包括请求的URL和缓存控制助手(例如"我有昨天的版本,只有在发生更改时才给我一个新的(。"(。
身体可能会根据请求的类型出现,也可能不会出现。帖子请求有尸体。
身体可以采用客户喜欢的任何格式。标题之一将告诉服务器的格式是什么。
HTML表单使用了几种格式,PHP知道如何解析这些格式并将数据放入$ _post中。
如果数据以另一种格式(例如JSON(,或者数据不符合PHP的怪癖(例如,在以相同名称的密钥末尾具有[]的规则(,那么您可能需要直接访问数据,因此您可以自己解析。这是原始的帖子数据。
-
$_POST
包含编码的URL(application/www-url编码(变量,这些变量已发布到您的脚本上,并为您使用PHP解码。当您处理HTML表单数据时,您会使用此。 -
file_get_contents("php://input")
-获取原始帖子数据,并且在编写API并需要XML/JSON/...输入时需要使用此数据> -
$HTTP_RAW_POST_DATA
-从理论上讲,它与上面相同,但取决于php.ini。并且不再在php 7
中使用
http消息由一系列标题和一个车身组成(可以要求/可选/禁止根据标题(。
对于URL http://stackoverflow.com/questions/43519007/usage-of-http-raw-post-data
,正文是用于生成您正在阅读的文档的HTML。
如果您提出了该请求,则没有请求主体。
如果您提出了邮政请求,那么会有。如果提交表格,它将使用可以使用enctype
属性指定的格式之一对其进行编码。
通常,在PHP中,当您想使用该数据时,您将使用包含内容后包含内容的$_POST
。
原始身体是身体已经被解码。
大部分时间,当我们使用HTTP POST请求时,我们正在研究浏览器提交表单的结果。这将以标准方式格式化数据(是否要编码" Query-string"编码"或quot"多部分/form-data&quort"(,该数据编码一组键值对。PHP自动将任何格式的任何请求解析到超级全球阵列$_POST
。
但是,实际的HTTP请求主体只是一条文本,在某些情况下,我们想这样对待它。例如,SOAP请求使用XML文档作为邮政请求的正文。$HTTP_RAW_POST_DATA
使您可以访问此文本 - 它是" RAW"因为尚未处理过,所以它只是作为字符串回馈给您。
值得注意的是,$HTTP_RAW_POST_DATA
是访问此问题的旧的方法,而较新版本的PHP中的正确方法是使用file_get_contents('php://input');
,其中php://input
是代表相同原始数据的虚拟文件。