【发布时间】:2012-12-04 03:40:53
【问题描述】:
我正在发布一个 401 标头和一个 WWW-Authenticate 标头,其中包含来自 PHP 的自定义值“应用程序”。自定义值阻止浏览器加载 Apache 授权弹出窗口,就像 WWW-Authenticate 标头设置为“基本”一样。这是我的应用程序处理身份验证时所需的行为。这一切都很好,似乎遵循 401 状态代码的意图,比发出 403 标头更好。
当我在 Apache 配置中已经具有 Apache 身份验证设置的服务器上运行此程序时,会出现问题。401 标头导致 Apache 发送 Apache 配置中指示的 WWW-Authenticate 方法,而不是我发出的 WWW-Authenticate 标头来自 PHP。因此,响应标头变为 Apache 配置中的“基本”,而不是从我的应用程序发出的“应用程序”。这会导致无限的授权循环,并且 Apache auth 弹出窗口不断出现。
我目前对此的解决方案是发出 403 标头,但这样做似乎不正确。 403 表示该请求永远不会被授予,即使用户进行了身份验证。
我是否应该不使用 401 标头进行应用程序级登录?似乎它仅用于 HTTP 身份验证。如果不是,403真的适合这个吗?我找遍了整个地方,找不到一个明确的标准。
【问题讨论】:
-
我想我正在尝试将为 http 协议编写的状态代码应用于我的应用程序,但它并不能准确翻译。似乎没有任何有效的 http 状态代码。我想 403 可能真的是正确的,就 HTTP 协议而言。 “只要你继续发出同样的请求,我就会继续拒绝。” HTTP 是无状态的,对我的应用程序的登录方案一无所知。
标签: php apache http-headers authorization