在PHP页面中检测AJAX请求

Detecting AJAX request in a PHP page?

本文关键字:检测 AJAX 请求 PHP      更新时间:2023-11-18

这是检测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安装,因为我想让我的代码在尽可能多的情况下工作。

这是检测AJAX请求的最可靠方法吗

这几乎和你可能得到的一样确定。

还是在我的jQuery.ajax代码中添加自定义头更安全?

为什么重复努力?jQuery已经在添加该自定义标头。


忘记让服务器关心"Ajax"answers"Not Ajax"之间的区别,而不是关心(例如)"Want JSON"answers"Want HTML",会更干净。

您可以为此使用HTTP Accept标头。

没有安全的方法来检测Ajax请求

Ajax请求具有与GET/POST正常页面视图相同的模式。

X_开头的HTTP头是自定义字段,甚至没有在每个Ajax库中实现。

你不应该依赖这些信息,因此实现你想要实现的完全不同的方式。

我确实喜欢旧的浏览器和旧的PHP安装使我的代码在尽可能多的情况下工作。

如果这是你的目标,那就忘了头球。

最好和最短的答案就在我的旁边,来自Quentin:

忘记让服务器关心"Ajax"answers"非Ajax"之间的区别,而不是关心(例如)"想要JSON"answers"想要HTML"。

在互联网上,你根本无法问"你从哪里来,坐过哪趟车"并得到可靠的答案。互联网的设计并不是为了解决这种问题

public function getIsAjaxRequest()
    {
        return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
    }