一直没有用过HTTP_RAW_POST_DATA,但是经常看到有人用,比如微信的通知接口。
The RAW / uninterpreted HTTP POst information can be accessed with:
$GLOBALS['HTTP_RAW_POST_DATA']
This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).
也就是说,基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型
另外还有一项 php://input 也可以实现此这个功能
php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。
示例:
var para = $('#xml').val(); $.ajax({ url:"url/", data:para, dataType:'text', type:'POST', contentType:'text/xml',//指定发送信息至服务器时内容编码类型 success:function(txt){ $('#response').text(txt); } });
//两种方式等价,官方推荐使用第一个 $t1 = file_get_contents("php://input"); $t2 = $GLOBALS["HTTP_RAW_POST_DATA"];