file_get_contents("php://input")
或$HTTP_RAW_POST_DATA
-哪个更适合获取JSON请求的正文?
在使用客户端XmlHTTPRequest
时,我应该使用哪种请求类型(GET
或POST
)来发送JSON数据
我的问题的灵感来自于这个答案:How to post JSON to PHP with curl
引述自该答案:
从协议的角度来看,file_get_contents("php://input")
实际上更正确,因为您实际上并不是在处理
多部分表单数据。
发布于 2010-04-29 00:42:54
实际上,php://input
允许你读取原始的POST数据。
它是$HTTP_RAW_POST_DATA的内存消耗较少的替代方案,并且不需要任何特殊的php.ini指令。
enctype="multipart/form-data"
不提供php://input
。
发布于 2013-02-24 02:39:58
input php://
是一个只读流,允许您从请求体读取原始数据。在POST请求的情况下,最好使用php://输入而不是$HTTP_RAW_POST_DATA,因为不依赖于特殊的php.ini指令。此外,对于那些默认情况下不填充$HTTP_RAW_POST_DATA的情况,与激活always_populate_raw_post_data相比,它可能是一种内存密集度较低的替代方案。
发布于 2015-10-20 08:53:46
file_get_contents(php://input) -获取原始的POST数据,当您编写API并需要XML/JSON/...时,需要使用它。一些不能被PHP解码成$_POST的输入示例:
通过邮寄JSON字符串发送
<input type="button" value= "click" onclick="fn()">
<script>
function fn(){
var js_obj = {plugin: 'jquery-json', version: 2.3};
var encoded = JSON.stringify( js_obj );
var data= encoded
$.ajax({
type: "POST",
url: '1.php',
data: data,
success: function(data){
console.log(data);
}
});
}
</script>
1.php
//print_r($_POST); //empty!!! don't work ...
var_dump( file_get_contents('php://input'));
https://stackoverflow.com/questions/2731297
复制相似问题