Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查传入请求是否为JSON类型_Php_Httprequest - Fatal编程技术网

PHP检查传入请求是否为JSON类型

PHP检查传入请求是否为JSON类型,php,httprequest,Php,Httprequest,是否仍然需要检查传入请求是否为AJAX JSON类型 我试过了 if(($_SERVER['REQUEST_METHOD']=='JSON')) { } 但它不起作用 有什么想法吗?您可以检查accept参数,如果它是text/javascript您的json,如果它是text/xml猜怎么着:p $\u服务器['HTTP\u ACCEPT']尝试json\u decode()您可以检查X-request-With头,一些库,如将其设置为“XMLHttpRequest” 您需要从客户端设置一个

是否仍然需要检查传入请求是否为AJAX JSON类型

我试过了

if(($_SERVER['REQUEST_METHOD']=='JSON'))
{
}
但它不起作用


有什么想法吗?

您可以检查accept参数,如果它是text/javascript您的json,如果它是text/xml猜怎么着:p


$\u服务器['HTTP\u ACCEPT']

尝试json\u decode()

您可以检查
X-request-With
头,一些库,如将其设置为
“XMLHttpRequest”


您需要从客户端设置一个头。jQuery和其他库设置一个
x-request-with
标题:

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
   echo "Ajax request";
}

你在哪里接受你不知道的请求

您可以在脚本的开头有一个函数,尝试将数据作为JSON或simplexml导入。如果它捕捉到一个错误,你知道它是另一个

再想一想,如果让它测试为JSON,simplexml将抛出一个错误,原因有很多

 $json_request = (json_decode($request) != NULL) ? true : false;

您始终可以设置一个额外的头来指定该值,或者使用任意变量来指示JSON请求

您假设JavaScript程序将正确设置XMLHttpRequest的头,这是永远不会完成的(谁在乎呢?)。一般来说,服务器端脚本只能以一种格式进行应答,我看不出有任何不同的原因。这是一个标准过程,当您请求某个页面或服务(点击URL)时,您应该指定请求中预期的结果类型。我曾在许多web服务上工作过,其中用户期望XML或JSON中的信息,所以他们在请求参数中指定这些信息。另一方面,他们必须提供URL的扩展,比如somesite.com/get_user[.xml |.json]。Java中的Jersey等许多自由软件、jQuery和少数php自定义curl库都会将这些信息附加到请求头中(标准通信方式)。否则,在每个请求中传递额外的参数当浏览器启动与任何站点的服务(或URL)的通信时,如果数据类型设置为类似json的
数据类型:“json”
,则它们在请求头中指定
text/html
,jQuery在请求头中设置
application/json
,上述变量如下
application/json,text/javascript,*/*;q=0.01
浏览器打开的URL将显示
text/html、application/xhtml+xml、application/xml;q=0.9,图像/webp,*/*;q=0.8
注意,mime是application/json。在您的链接中,jQuery使用“X-Requested-With”而不是“X\u Requested\u With”。那么我们不应该做
$is_ajax=($服务器['X-request-With']='XMLHttpRequest')而不是?
 $json_request = (json_decode($request) != NULL) ? true : false;