对于普通的ajax请求,我使用:
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
但这不适用于跨域请求。
我该怎么办?
最佳答案
编辑2:
如果以这种方式使用jquery.ajax函数:
var request = $.ajax({
url: "http://somesite.com/somescript.php?somevar=somevalue",
dataType: "jsonp",
jsonp: 'callback',
success: function(data) {
alert('Done!');
}
});
然后您可以检查
$_SERVER['REQUEST_URI']
变量,或者只检查$_GET['callback']
和$_GET['_']
。请求uri将如下所示:/somescript.php?somevar=somevalue&callback=jquery17028849187534502896_1333494007273&_=133349443880
编辑:下面的答案是确定它是否跨域,而不是检查它是否是ajax
“如何确定ajax调用是否来自不同的域”问题的答案是:
我正在使用jquery.ajax调用,对我来说,使用变量
$_SERVER['HTTP_REFERER']
可以很好地工作。如果我在本地计算机上使用页,则此超级全局设置将返回空字符串。
如果我在互联网上使用一个页面,则
$_SERVER['HTTP_REFERER']
的值返回进行ajax调用的页面的url。所以检查这个值可以告诉你你需要知道什么。