【问题标题】:What is the raw POST data?什么是原始 POST 数据?
【发布时间】:2012-08-30 10:24:51
【问题描述】:

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

什么时候设置这个变量,原始 POST 数据的含义是什么?

我理解$_POST,但我完全混淆了$HTTP_RAW_POST_DATA

【问题讨论】:

  • 你试过看看那里有什么吗? var_dump($HTTP_RAW_POST_DATA); 甚至更好的var_dump(file_get_contents("php://input"));
  • @zerkms:是的,是NULL。我都试过了,输出分别是NULLstring(0) ""

标签: php


【解决方案1】:

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

因此,在原始 POST 数据中存在通过网络传递的数据。

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

【讨论】:

    【解决方案2】:

    $HTTP_RAW_POST_DATA 包含以下格式的原始 POST 数据:

    • 文字
    • JSON
    • XML
    • HTML

    一般来说,应该使用php://input 而不是$HTTP_RAW_POST_DATA.,因为从 PHP 5.6.0 开始,此功能已被弃用。强烈建议不要依赖此功能。

    来源:php.net - $HTTP_RAW_POST_DATA

    【讨论】:

    • 链接已损坏 (404)。
    【解决方案3】:

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

    标头包括请求的 URL 和缓存控制帮助程序(例如“我昨天有一个版本,如果有变化,只给我一个新版本,好吗?”)。

    正文可能会出现也可能不会出现,具体取决于请求的类型。 POST 请求有正文。

    正文可以是客户喜欢的任何格式。其中一个标头会告诉服务器格式是什么。

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

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

    那是原始的 POST 数据。

    【讨论】:

      【解决方案4】:

      $_POST可以说是$HTTP_RAW_POST_DATA变量拆分后的结果。 PHP 拆分原始帖子数据并按照我们在$_POST 数组中看到的方式对其进行格式化。例如:

      $HTTP_RAW_POST_DATA 看起来像这样

      key1=value1&key2=value2
      

      那么$_POST 将如下所示:

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

      【讨论】:

        【解决方案5】:

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

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

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

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

        $_POST['test']='hello'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-17
          • 2011-03-11
          • 2012-11-27
          • 2012-08-25
          • 1970-01-01
          • 2019-02-20
          • 2020-06-20
          • 2017-01-21
          相关资源
          最近更新 更多