我希望有一个使用 AJAX 访问 PHP 文件的网页./ajax/file.ajax.php
麻烦的是,我不希望人们能够在浏览器中输入地址来直接访问该 PHP 文件。
有没有办法让只有 AJAX 请求才能访问该文件?
我可以在 PHP 文件中检查以实现此目的吗?
如果您使用 jQuery 制作 XHR,它将设置一个自定义 header X-Requested-With
。您可以检查并确定如何提供您的回复。
$isXhr = isset($_SERVER["HTTP_X_REQUESTED_WITH"])
AND strotlower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest";
然而,这对于欺骗来说是微不足道的。过去,我使用它来决定是渲染整个页面(如果未设置)还是页面片段(如果设置,则注入当前页面)。
如果您不使用jQuery
或不感兴趣/您不能使用自定义标头(与alex
提供的内容一起使用),您可以POST
使用您的 Ajax 请求简单一些数据,并在该特定文件中检查该数据是否已发送或不。如果您通过GET
它发送将在地址栏上可见,这就是我建议的原因POST
。
<?php
if (empty($_POST['valid_ajax']))
header('Location: /');
?>
它并不可靠,因为您可以通过提供手工数据来欺骗它,但是如果您的问题不是那么严重,那总比没有好。