我有一个 php 函数,可以将错误的 IP 添加到 MySQL 表中。
然后,我网站上的每个页面都会检查表格,如果找到匹配项,则会抛出 HTTP 401 header 。
if(badCrawler()){
header("HTTP/1.1 401 Unauthorized");
header("Location: error401.php");
}
是否可以在不更改 url 的情况下执行此操作?
谢谢
最佳答案
当然。在您的 401 header 之后退出
。根本不需要 header("Location...")
。
if(badCrawler()){
header("HTTP/1.1 401 Unauthorized");
exit;
}
旁注:401 通常与身份验证请求结合使用。
来自 the specs :
响应必须包含 WWW-Authenticate header 字段(第 14.47 节),其中包含适用于所请求资源的质询。
最好使用 403 Forbidden
来拒绝访问,甚至可以使用 404 Not Found
如果您想让坏的爬虫认为该页面不再存在:
header("HTTP/1.0 404 Not Found");
exit;
发送内容
请注意,您的 404 响应可能会导致某些浏览器出现空白页面,请参阅 this thread 中的最佳答案。完整解释为什么会这样。 header 基本上可以正常工作,但是否显示任何 HTML 内容完全取决于您。
解决方案很简单,在 exit
语句之前回显您的内容(或包含一个单独的文件)。
关于php - 在没有重定向的情况下使用 php 抛出 401 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914130/