1

我希望有一个网站,其中一些内容是公开的,而另一些内容只对经过身份验证的用户可见。所以身份验证是可能的,但不是必需的。我想知道这是否可能。

一些背景:

首先要告诉客户端身份验证可用,我需要发送一些标头。据我了解RFC 2617,“WWW-Authenticate”标头字段必须始终是“401(未授权)”响应的一部分。

现在,一些客户端(例如 wget)将在获得 401 标头时停止尝试(wget 实际上使用术语“需要授权”而不是“未授权”)。

那么这是一个 wget 错误还是没有可选的 http 基本身份验证之类的东西?

4

1 回答 1

5

401 Unauthorized专门用于需要授权但未提供(或未正确提供)的情况。

在您的场景中,您只会发送WWW-Authenticate需要身份验证的请求的标头 - 如果身份验证被取消或不满意,则返回401.

在发出需要它的请求之前,不会提示用户进行身份验证。没有请求具有可选的身份验证 - 请求是否允许匿名用户。

值得注意的是,HTTP 身份验证对于网站登录来说是一个糟糕的选择,原因如下:

  • 没有注销的概念
  • 身份验证详细信息以纯文本形式发送(除非通过 SSL)
  • 无法修改界面/UX
  • 没有密码提醒、自助注册、最低密码要求等

HTTP auth 来自站点静态的时代,因此安全性是在网络服务器级别处理的。

于 2013-01-19T21:26:21.487 回答