读取原始 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
(用于文件上载)时,这两种方法都不可用。