对于普通的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。所以检查这个值可以告诉你你需要知道什么。

09-10 11:16
查看更多