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