一尘不染

防止直接访问由ajax函数调用的文件

php

我从像这样的ajax调用php代码:

ajaxRequest.open("GET", "func.php" + queryString, true);

由于这是一个获取请求,因此任何人都可以通过简单地检查标头来查看它。传递的数据不敏感,但由于获取参数名称也很容易,因此有可能被滥用。

如何阻止直接访问http://mysite/func.php却允许我的ajax页面访问它?


阅读 340

收藏
2020-05-26

共1个答案

一尘不染

大多数Ajax请求/框架都应设置此特定标头,以用于过滤Ajax v非Ajax请求。我用它来帮助确定许多项目中的响应类型(json / html):

if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) )
{
    // allow access....
} else {
    // ignore....
}

编辑:您可以在自己的Ajax请求中将此添加为自己,并在javascript代码中添加以下内容:

var xhrobj = new XMLHttpRequest();
xhrobj.setRequestHeader("X-Requested-With", "XMLHttpRequest");
2020-05-26