我试图拒绝通过浏览器直接访问do.php文件。它有效,但是 这个文件用在了一些ajax脚本中,所以一旦我使用了上面的代码,它也会阻止文件被ajax调用。或已执行,并且我希望其他文件可以访问它,而不是在浏览器中直接访问
<Files "do.php">
Order Allow,Deny
Deny from all
</Files>
答案 0 :(得分:0)
实际上不可能实现,如果要用于AJAX请求,则文件必须可访问,并且没有万无一失的方式来区分AJAX请求和尝试手动请求文件的人。 / p>
通常,AJAX请求将包含一个附加的X-Requested-With: XMLHTTPRequest
头。您可以在脚本中检查该标头,如果未设置该标头,则会发出错误。
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){
http_response_code(403);
echo 'Direct access denied';
exit;
}
这将阻止您的临时用户尝试在新的浏览器选项卡中打开页面,但不会阻止某人使用允许设置标头(例如cURL或脚本语言)的其他工具访问该页面。