2

我们有一个使用 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 中运行良好。

处理这个问题的正确方法是什么?

4

1 回答 1

1

我弄清楚了这个问题。REST API 有一个额外的身份验证层,它使用“授权”http 标头来设置 api-key。删除此安全层后,一切正常。

我会留下这个问题,以防其他人犯同样的错误。

于 2013-07-26T19:18:27.363 回答