HTTP预授权

时间:2009-10-19 20:44:30

标签: http authorization header

http://localhost/tmp/我有一个要求用户和密码(身份验证)的表单。 在用户发布(点击确定)之后,我想将用户重定向到使用Apache的Basic AuthType的http://localhost/test/。发生在表单中输入的用户和密码正好是在http://localhost/test/进行身份验证的凭据 我想要的是解决方案,以便不要求用户在第二个地址中输入密码。到目前为止,我能够使用CURL(使用GET)传递'Authorization:Basic“base64_encoded用户和密码”',并获得我想要的响应(例如test / index.html的内容)。然而,这是卷曲获取信息而不是我的浏览器重定向与预授权。也就是说,如果我在地址栏中输入http://localhost/test/,它会再次要求输入密码。有任何想法吗?需要澄清吗?

3 个答案:

答案 0 :(得分:2)

问题是授权状态是在浏览器中维护的,没有真正的方法可以告诉浏览器它的授权。

大多数系统依赖于Cookie系统,但BASIC / DIGEST HTTP AUTH是HTTP标头。因此,只有浏览器可以设置这些。

我应该说,对于正常的每天请求 - 你可能(我不确定)能够在XHR中设置标题。

答案 1 :(得分:0)

您可以简单地将表单提交位置设置为重定向请求http://localhost/test/并注意身份验证吗?

顺便说一下,Fiddler是调试此类事情的好工具

答案 2 :(得分:0)

Will的答案会指出你正确的方向。

至少在IE中,它可以使用用户名/密码参数(在Open()调用中)发送XHR请求(到一些一次性页面)。这样做会在内部为浏览器会话缓存此用户名和密码,因此当您随后访问服务器上的其他页面时,这些页面将自动进行身份验证。

我不知道这个技巧是否适用于其他浏览器。