php - 在没有重定向的情况下使用 php 抛出 401 header

标签 php http header

我有一个 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/

相关文章:

c++ - 避免递归(?) #include 声明

php - 突破 if 和 foreach

php - 如何在不明确的列名上产生错误消息?

php - Laravel 5 - DB join 仅返回第一个表列集

ios - 无法在 swift iOS 中处理 http 代码?

java - 将 Python 请求代码翻译成 Java (UniRest)

http - 是否可以通过 CoAP 传输文件?

c++ - PE文件中的MZ签名有什么用?

javascript - 如何删除上传的图片?

java - 生成不同包中的JNI头文件