【问题标题】:HTTP PreauthorizationHTTP 预授权
【发布时间】:2009-10-19 20:44:29
【问题描述】:

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

【问题讨论】:

    标签: http authorization header


    【解决方案1】:

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

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

    我应该说,对于正常的日常请求——您可能(我不确定)能够在 XHR 中设置标头。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 否,因为 test/ 使用 webdav,所以我想在 tmp/ 进行预身份验证(做一些其他事情),并且在重定向时 test/ 已经可以访问。
      【解决方案3】:

      Will 的回答为您指明了正确的方向。

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

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

      【讨论】:

        猜你喜欢
        • 2019-07-04
        • 2012-04-18
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2021-08-28
        • 2015-05-30
        • 2021-04-04
        • 2016-04-24
        相关资源
        最近更新 更多