我尝试确定一个对PHP文件的请求是通过ajax发送还是其他方法。
我搜索了一下并阅读了很多文章,其中建议采用以下方法:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo 'This is an ajax request!';
exit;
}
echo 'This is not an ajax request!';
但是我的服务器没有这个变量:未定义的索引:HTTP_X_REQUESTED_WITH ...
这是我发起ajax请求的方式:
$.ajax({
url: 'http://URL/test.php',
complete: function(res) {
console.log(res.responseText);
}
});
我从不同的URL发起了这个请求,所以我设置了header('Access-Control-Allow-Origin: *');
但是我发现$_SERVER
有一个区别:
Ajax请求:$_SERVER[HTTP_ACCEPT] => */*
非Ajax请求:$_SERVER[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
我的问题是,是否有办法将HTTP_X_REQUESTED_WITH
放入$_SERVER
中?如果没有,是否有合适的方法可以使用$_SERVER[HTTP_ACCEPT]
来确定请求是否为Ajax?