spring - http身份验证对话框没有弹出
问题描述
我正在尝试调用(spring)rest API,该 API 使用使用 spring 安全性的摘要身份验证进行保护,并尝试从 redux 前端访问它。我收到了401
返回到前端的响应,其中包含响应标头 WWW-Authenticate: 还有 .. 但不幸的是,我没有在前端弹出 http 基本身份验证以输入用户名和密码。
有人可以帮助我确定可能的原因吗?当我直接通过 chrome 访问我的 rest API 时,我能够弹出 http 身份验证。
解决方案
不幸的是,XHR 请求不会触发身份验证弹出窗口。仅当主请求(您正在加载的 html 页面或您从该页面进行的重定向)抛出 401 时才会发生这种情况。
如果您将请求加载到iframe
. 但是,使用基本身份验证屏幕提供的凭据不会传递给其他 XHR 请求。如果您确实使用 iframe,则应使用某种 cookie 进行响应,随后的 XHR 请求不应再次需要基本身份验证屏幕
您的选择是:
在您的 javascript 中捕获此错误并使用您自己创建的某个界面询问密码。
在 iframe 中发出相同的请求(或另一个将触发相同安全限制的请求)并在成功时使用会话 cookie 进行响应,然后触发 XHR。
创建一个登录 UI 并预先要求提供凭据,因为 XHR 请求将需要它们。
推荐阅读
- javascript - 当我在反应本机 redux 中更新状态时,会删除以前的状态
- rest - REST API 请求帮助(POST 方法)
- arrays - C通过已知sizeof迭代数组
- reactjs - ReactJS 读取 URL 参数
- python - 使用箭头时 Python 中带有 Networkx 的不同图
- python-3.x - 创建一个新列以指示数据框在 Python 中至少拆分 n 行组
- javascript - Amazon Amplify 上的下一个 JS 部署失败
- unity3d - 统一编辑器 2021.1.1.19f1 中的 UI 工件
- node.js - mikro-orm 中的 EntityManager、EntityRepository 是什么以及它们之间的区别?
- javascript - 带有 post 方法和 runat 服务器的表单元素