读取原始 POST 数据

通常,POST 请求中发送的数据是 MIME 类型为 application/x-www-form-urlencoded 的结构化键/值对。但是,许多应用程序(如 Web 服务)需要发送原始数据(通常是 XML 或 JSON 格式)。可以使用两种方法之一读取此数据。

php://input 是一个流,提供对原始请求主体的访问。

$rawdata = file_get_contents("php://input");
// Let's say we got JSON
$decoded = json_decode($rawdata);

Version < 5.6

$HTTP_RAW_POST_DATA 是一个包含原始 POST 数据的全局变量。仅当启用 php.ini 中的 always_populate_raw_post_data 指令时才可用。

$rawdata = $HTTP_RAW_POST_DATA;
// Or maybe we get XML
$decoded = simplexml_load_string($rawdata);

自 PHP 5.6 以来,该变量已被弃用,并在 PHP 7.0 中被删除。

请注意,当内容类型设置为 multipart/form-data(用于文件上载)时,这两种方法都不可用。