http-headers – HTTP 401 – 什么是合适的WWW-Authenticate头值?

我目前工作的应用程序有一个会话超时值。如果用户没有交互时间超过此值,那么他们尝试加载的下一页,将提示他们登录。

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

我建议401是更好,因为我们的JSON解析器将不会尝试消耗一个HTML登录页面。:)

reading the spec,但是,我注意到,WWW认证字段也必须发送。

这个字段有什么好的价值?应用程序登录是否足够?

当指示HTTP基本认证时,我们返回类似:

WWW-Authenticate: Basic realm="myRealm"

而Basic是该方案,其余的非常依赖于该方案。在这种情况下,领域只是为浏览器提供一个文字,可以在提示用户ID和密码时向用户显示。

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

从回忆,Windows挑战响应使用不同的方案和不同的参数。

诀窍是,它是由浏览器来确定它支持什么方案,以及它如何响应。

我的直觉感觉,如果你使用基于表单的身份验证是留在200 relogin页面,但添加一个自定义头,浏览器将忽略,但你的AJAX可以识别。

对于一个真正好的用户AJAX体验,让脚本挂起发现会话过期的AJAX请求,通过弹出窗口触发relogin请求,并成功,重新提交原始的AJAX请求,并照常进行。

避免欺骗,只是让脚本每5分钟到达网站,以保持会话活着的原因,只是打破了会话到期点。

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

http://stackoverflow.com/questions/1748374/http-401-whats-an-appropriate-www-authenticate-header-value

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:http-headers – HTTP 401 – 什么是合适的WWW-Authenticate头值?