如何使用 PHP 检查请求是否为 AJAX 请求

2022-08-30 08:20:48

我想检查服务器端对我的php页面的请求是否是ajax请求。

我看到了两种方法来做到这一点:

第一种方法:在请求中发送一个参数,告诉页面这是一个AJAX请求(=GETmypage.php?ajax)

我的页面.php:

if(isset($_GET['ajax'])) {
    //this is an ajax request, process data here.
}

第二种方法:将标头设置为 :xmlHttpRequest

客户端 js:

xmlHttpRequestObject.open(“GET”,url,true);
xmlHttpRequestObject.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

我的页面.php:

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) {
    //request is ajax
}

事实是,这两种方法很容易被黑客入侵,因此检查我是否收到这样的AJAX请求是不安全的。

如何检查我是否收到 AJAX 请求?


答案 1

这是实现结果的教程

例:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{    
  exit;    
}
continue;

这将检查参数是否为空,如果它等于 ,则它将退出脚本。HTTP_X_REQUESTED_WITHxmlhttprequest


答案 2

没有确定的方法来知道请求是通过Ajax发出的。您永远不能信任来自客户端的数据。您可以使用几种不同的方法,但它们可以通过欺骗轻松克服。


推荐