当前位置:  开发笔记 > 编程语言 > 正文

HTTP 401 - 什么是适当的WWW-Authenticate标头值?

如何解决《HTTP401-什么是适当的WWW-Authenticate标头值?》经验,为你挑选了2个好方法。

我正在处理的应用程序有一个会话超时值.如果用户之间的交互时间不超过此值,则会尝试加载下一页,然后系统会提示他们登录.

所有发出的请求都通过这种机制进行路由,其中​​包括AJAX调用.最初我们在登录页面上发送了200个头文件,这引入了AJAX的一些问题,因为如果发送了200个响应,则运行代码,并且从这些RPC调用发回的大多数数据是JSON或得到评估的原始JavaScript(不问:|).

我建议401更好,因为我们的JSON解析器不会尝试使用HTML登录页面.. :)

但是,在阅读规范时,我注意到该WWW-Authenticate字段也必须发送.

这个领域有什么好处?会Application Login满足吗?



1> Swanny..:

当指示HTTP基本身份验证时,我们返回类似于:

WWW-Authenticate: Basic realm="myRealm"

虽然Basic是该计划,但其余部分在很大程度上取决于该计划.在这种情况下,领域只是为浏览器提供一个文字,当提示输入用户ID和密码时,该文字可以显示给用户.

你显然没有使用Basic,因为使用Basic Auth时没有会话到期.我假设你正在使用某种形式的基于表单的身份验证.

通过回忆,Windows Challenge Response使用不同的方案和不同的参数.

诀窍在于,由浏览器决定它支持哪些方案以及它如何响应它们.

我的直觉是,如果您使用基于表单的身份验证是保留200 +重新登录页面,但添加浏览器将忽略但您的AJAX可以识别的自定义标头.

要获得非常好的User + AJAX体验,请让脚本继续查找发现会话过期的AJAX请求,通过弹出窗口发出重新登录请求,并在成功时重新提交原始AJAX请求并继续正常运行.

避免让脚本每隔5分钟到达网站以保持会话存活的作弊,因为这会使会话到期点失效.

另一种选择是烧录AJAX请求,但这是一种糟糕的用户体验.


感谢队友,我现在使用的是403,因为它不是重定向,它实际上包括登录表单来代替原始页面。它还更好地符合W3规范。感谢您提供的信息。
请参阅此答案,了解如何仍然使用HTTP 401:http://stackoverflow.com/questions/928874/how-do-i-keep-firefox-from-prompting-for-username-password-with-http-basic- AUTH/19102200#19102200

2> Pär Wiesland..:

不,您必须指定要使用的身份验证方法(通常为"基本")和身份验证领域.有关示例请求和响应,请参见http://en.wikipedia.org/wiki/Basic_access_authentication.

您可能还想阅读RFC 2617 - HTTP身份验证:基本和摘要访问身份验证.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有