这是检测AJAX请求的最可靠方法,还是在我的jQuery.ajax代码中添加自定义标头更安全?
function isAjaxRequest() {
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
return TRUE;
}
}
return FALSE;
}
我做关心旧版浏览器和旧版PHP安装,因为我想让我的代码在尽可能多的情况下工作。
答案 0 :(得分:2)
这是检测AJAX请求的最可靠方法
这是你可能得到的肯定。
或者在我的jQuery.ajax代码中添加自定义标头更安全吗?
为什么要重复努力? jQuery已经添加了自定义标题。
忘记让服务器关心“Ajax”和“Not Ajax”之间的区别,而不是关心(例如)“想要JSON”和“想要HTML”。
您可以使用the HTTP Accept header。
答案 1 :(得分:2)
没有安全的方法来检测Ajax请求。
Ajax请求与GET / POST普通网页浏览具有相同的模式。
以X_
开头的HTTP标头是自定义字段,甚至没有在每个Ajax库中实现。
您不应该依赖这些信息,因此要以完全不同的方式实现您想要实现的目标。
我确实关心旧版浏览器和旧版PHP安装 使我的代码在尽可能多的情况下工作。
如果这是您的目标,请忘记标题。
最好和最短的答案就在我的昆坦旁边:
忘记让服务器关心它会更干净 “Ajax”和“Not Ajax”之间的区别而不是关心 (例如)“想要JSON”和“想要HTML”。
在互联网上,你不能问“你来自哪里,你乘坐的是哪一个”,并得到一个可靠的答案。互联网的设计并不适合这类问题。
答案 2 :(得分:-2)
public function getIsAjaxRequest()
{
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
}