2009-10-19 113 views
1

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

回答

2

的问题是,授权状态保持在浏览器中一个伟大的工具,并没有真正的方式来告诉它授权的浏览器。

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

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

0

您能否简单地将表单提交位置设置为重定向destionation http://localhost/test/并在此处注意身份验证?

顺便说一句,Fiddler对于调试这样的事情

+0

没有,因为测试/使用webdav,所以我想在tmp /(做一些其他的东西)预先认证,并有测试/重定向时已经可以访问。 – Eduardo 2009-10-19 20:53:32

0

威尔的答案指出你在正确的方向。

至少在IE中,它的作用是通过用户名/密码参数(在Open()调用中)发送一个XHR请求(到一些不需要的页面)。这样做会在浏览器会话内部缓存这个用户名和密码,所以当你随后访问服务器上的其他页面时,认证应该自动发生在那些页面上。

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