gpt4 book ai didi

http - 如何抑制由 WWW-Authenticate header 引起的登录对话框?

转载 作者:可可西里 更新时间:2023-11-01 16:18:13 25 4
gpt4 key购买 nike

当用户未经授权访问页面时,我会发送 HTTP 401。此外,根据 HTTP/1.1 spec 的要求,我还发送了一个 WWW-Authenticate header 。

我知道至少 1 种情况下省略此 header 会导致问题:Firebug(Net 选项卡将为空)。

用户可以使用电子邮件地址或用户名和密码登录。表单通过 AJAX 提交,JSON 响应负责在成功登录后重定向用户,或在失败时显示错误消息。

在 Windows Phone 8 上,出现此 header 时会显示自定义对话框。它具有用户名密码 字段。它还具有显示密码记住我的密码复选框。
问题是,此对话根本不适用于应用程序的身份验证过程。

header 的值似乎并不重要,我已经尝试使用 WWW-Authenticate: formWWW-Authenticate: blah 但我得到了对话不管。我怎样才能在遵守规范的同时抑制这种情况?

最佳答案

从你的问题和评论来看,你似乎在进行基于表单的身份验证,但是,为了符合 HTTP 规范,你认为你应该返回一个 401,并且,因为这需要还要发送 WWW-Authenticate header ,您也添加了它。

事实是:基于表单的身份验证是非标准的,您不应该使用 401 Unauthorized,它将与标准 HTTP 身份验证一起使用。因此,使用虚拟身份验证方法可能会帮助您遵守 WWW-Authenticate 规范中的文字,但您一开始就不应该使用 401。

spec阅读:

10.4.2 401 Unauthorized

The request requires user authentication. The response MUST include a WWW-Authenticate header field containing a challenge applicable to the requested resource. The client MAY repeat the request with a suitable Authorization header field.

所有这些关于 HTTP header (WWW-AuthenticateAuthorization)的讨论都清楚地表明这是为客户端软件提供执行标准 HTTP 身份验证所需的信息(在大多数情况下通过对话框)。

顺便说一句,当您想进行 HTTP 身份验证时,在 WWW-Authenticate header 中提供自定义身份验证方法很有意义,即通过 Authorization header ,但使用您自己的身份验证scheme,而不是basicdigest。这当然需要理解该自定义方案的客户。

那么你可以做什么呢?由于表单例份验证是非标准的,这在规范中没有定义,但是如何使用 307 Temporary Redirect 将用户重定向到带有登录表单的页面? ,也许会添加信息,以便您可以在验证凭据后自动将用户重定向回他想要访问的页面。

关于http - 如何抑制由 WWW-Authenticate header 引起的登录对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com