我们有一个使用 Kerberos 保护的 REST API。托管在其他地方的是调用此 API 的 web 应用程序。
如果您直接导航到 API,则身份验证工作正常并返回 cookie。然后 webapp 工作得很好,因为它有一个用于 API 根 URI 的 cookie。
但是,如果您导航到 web 应用程序并HTTP GET
使用 AJAX 向 API 发出请求,则该请求将返回401: Unauthorized
以及WWW-Authenticate:Negotiate
. 如果我导航到同一个地址,chrome 会协商并获得身份验证,但在这种情况下,它会在此时停止。
有各种丑陋的技巧可以解决这个问题,比如创建一个 IFRAME 来获取 API 的某些部分,或者将用户重定向到 API 并使用 307 将用户弹回,但这些显然不是最佳的。
它在 IE7 中运行良好。
处理这个问题的正确方法是什么?