【问题标题】:What does header('HTTP/1.0 401 Unauthorized') do? [duplicate]header('HTTP/1.0 401 Unauthorized') 有什么作用? [复制]
【发布时间】:2015-02-15 17:21:33
【问题描述】:

在 Welling 和 Thomson 的书中编写以下代码

if (($_SERVER['PHP_AUTH_USER'] != 'user') ||
($_SERVER['PHP_AUTH_PW'] != 'pass')) {
// visitor has not yet given details, or their
// name and password combination are not correct
header('WWW-Authenticate: Basic realm="Realm-Name"');
header('HTTP/1.0 401 Unauthorized');
echo "<h1>Go Away!</h1>
<p>You are not authorized to view this resource.</p>";
} else {
// visitor has provided correct details
echo "<h1>Here it is!</h1>
<p>I bet you are glad you can see this secret page.</p>";
}

header('HTTP/1.0 401 Unauthorized') 是做什么的?我删除了这一行,脚本正常工作。

为什么这段代码没有这一行也能工作?

【问题讨论】:

  • 应该设置状态码。对于大多数设置,使用 HTTP/1.0 磁头是不正确的。通常应该是Status:。 -- 然而,您认为移除它后一切“正常工作”的评估似乎不太可能。
  • 这段代码在我的服务器上似乎可以正常运行....您认为没有正常运行的原因是什么?
  • @Cragmonkey 我想知道为什么这段代码没有这条线可以工作?感谢您的关注。

标签: php http-headers basic-authentication unauthorized


【解决方案1】:

HTTP 401 标头告诉您的浏览器您无权查看该页面,如果您尝试访问受保护的资源但未登录,这将是预期的情况。

注意:在发送这样的标头后始终包含 die();exit;,因为机器人不一定遵守标头说明,并且您希望在它们看到受保护的之前终止脚本内容。这尤其适用于重定向。

【讨论】:

    【解决方案2】:

    该命令发送的HTTP headerHTTP/1.0 401 Unauthorized,它告诉浏览器需要usernamepassword 才能查看页面。

    【讨论】:

    • 你能告诉我为什么这段代码没有这条线就可以工作吗?谢谢你的回答。
    【解决方案3】:

    header("HTTP/1.0 401 Unauthorized"); 向服务器发送未经授权的 401 状态码,表示您无权查看该页面。使用dieexit 而不是echo 来阻止其他代码被执行。

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 2011-07-28
      • 2013-06-17
      • 2010-11-04
      • 2020-06-01
      • 2010-10-18
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多