首页 > 解决方案 > http身份验证对话框没有弹出

问题描述

我正在尝试调用(spring)rest API,该 API 使用使用 spring 安全性的摘要身份验证进行保护,并尝试从 redux 前端访问它。我收到了401返回到前端的响应,其中包含响应标头 WWW-Authenticate: 还有 .. 但不幸的是,我没有在前端弹出 http 基本身份验证以输入用户名和密码。

有人可以帮助我确定可能的原因吗?当我直接通过 chrome 访问我的 rest API 时,我能够弹出 http 身份验证。

在此处输入图像描述

标签: springhttpsecurityauthenticationredux

解决方案


不幸的是,XHR 请求不会触发身份验证弹出窗口。仅当主请求(您正在加载的 html 页面或您从该页面进行的重定向)抛出 401 时才会发生这种情况。

如果您将请求加载到iframe. 但是,使用基本身份验证屏幕提供的凭据不会传递给其他 XHR 请求。如果您确实使用 iframe,则应使用某种 cookie 进行响应,随后的 XHR 请求不应再次需要基本身份验证屏幕

您的选择是:

  1. 在您的 javascript 中捕获此错误并使用您自己创建的某个界面询问密码。

  2. 在 iframe 中发出相同的请求(或另一个将触发相同安全限制的请求)并在成功时使用会话 cookie 进行响应,然后触发 XHR。

  3. 创建一个登录 UI 并预先要求提供凭据,因为 XHR 请求将需要它们。


推荐阅读