3

我希望有一个使用 AJAX 访问 PHP 文件的网页./ajax/file.ajax.php

麻烦的是,我不希望人们能够在浏览器中输入地址来直接访问该 PHP 文件。

有没有办法让只有 AJAX 请求才能访问该文件?

我可以在 PHP 文件中检查以实现此目的吗?

4

2 回答 2

4

如果您使用 jQuery 制作 XHR,它将设置一个自定义 header X-Requested-With。您可以检查并确定如何提供您的回复。

$isXhr = isset($_SERVER["HTTP_X_REQUESTED_WITH"])
         AND strotlower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest";

然而,这对于欺骗来说是微不足道的。过去,我使用它来决定是渲染整个页面(如果未设置)还是页面片段(如果设置,则注入当前页面)。

于 2012-10-16T10:44:52.230 回答
1

如果您不使用jQuery或不感兴趣/您不能使用自定义标头(与alex提供的内容一起使用),您可以POST使用您的 Ajax 请求简单一些数据,并在该特定文件中检查该数据是否已发送或不。如果您通过GET它发送将在地址栏上可见,这就是我建议的原因POST

<?php

if (empty($_POST['valid_ajax']))
    header('Location: /');

?>

它并不可靠,因为您可以通过提供手工数据来欺骗它,但是如果您的问题不是那么严重,那总比没有好。

于 2012-10-16T10:59:47.263 回答