当前位置: 首页 > 知识库问答 >
问题:

Keycloak重复“访问控制允许来源”导致cors错误

林烨烨
2023-03-14

我在React前端使用keycloak-js适配器时遇到了一个问题。

登录后,/token 终结点上重复的“访问控制-允许-源”会导致 CORS 错误:

CORS策略阻止了从源https://example.comhttps://accounts.example.com/auth/realms/myRealm/protocol/openid-connect/token对XMLHttpRequest的访问:访问控制允许源标头包含多个值https://example.com , *', 但只允许一个。

响应标头:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Access-Control-Allow-Methods

Keycloak 9在https://accounts.example.com的Nginx代理下以独立模式运行。

keycloak-js适配器配置:

{
  "realm": myRealm,
  "url": https://accounts.example.com/auth,
  "clientId": myClientId,
  "enable_cors": true
}

我已经尝试了客户端“Web Origins”的多种组合:

https://example.com*,但我不明白为什么我得到了一个额外的头访问控制允许原点:

共有2个答案

通令
2023-03-14

*对于运行在https上的站点而言,对于访问控制允许原点,该值无效。

从KeyClope中的web origins客户端配置中删除*,并显式配置所有使用的web origins(无wildchars)。

哈雅珺
2023-03-14

我们发现我们自己的代理也在编写访问控制允许源标题。这就是为什么我们和Keyclope一起得到了两次。

我们的devops团队已经修复了我们的代理代码,现在它可以工作了。

 类似资料:
  • 问题内容: 我试图使CORS请求正常工作。使用以下JS代码,我得到此错误: 这是JS代码: 当我使用chrome的devtools查看网络时,我发现确实没有标题。但是,当我手动加载该网站时,它就存在了! 我使用以下代码设置标题: 希望能有所帮助! 问题答案: 它说这意味着您的服务器应用程序需要调整以接受跨源请求。由于安全原因,默认情况下跨源请求不起作用。您需要启用它们。 对于django,有一个维

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我已经设置了一个带有套接字io的节点服务器,并尝试通过另一台服务器连接到它。但是,不同计算机上的一些浏览器会给我这个错误并使其始终重新连接: XMLHttp请求无法加载https://serverDomain.net:3000/socket.io/?EIO=3 我的js配置: 我正在使用节点 8.0 和套接字 io 2.2,您的帮助将不胜感激。 编辑:这是客户端代码:

  • 我正在尝试将webUntis(文档)API用于学校项目。现在,我只是尝试建立与API的任何类型的连接。 此代码产生以下错误消息: 已阻止跨源请求:同一源策略禁止读取位于的外部资源https://api.webuntis.dk/api/status(原因:缺少CORS标头“访问控制允许来源”)。 这个问题可能如何解决?也许我的API密钥是错误的? 免责声明:错误消息是从德语翻译过来的。

  • 我在这里遵循一个简单的教程: http://addyosmani.github.io/backbone-fundamentals/ 我有一个节点.js服务器在本地主机端口 4711 上运行 我让tomcat在端口8082上运行,并让backbone.js应用程序作为客户端在该服务器上以index.html身份启动。 但我明白了: XMLHttpRequest 无法加载 ...api/books.本

  • 问题内容: 我正在使用以下脚本- 我尝试访问的计算机正在运行播放框架。我收到以下错误: 选项404(未找到)jquery-1.9.1.min.js:5 XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我已经难过了两天,有人可以帮我吗? 提前谢谢 问题答案: 问题是您正在尝试进行跨域调用(从到)。Same Origin Policy 不允许这样做,因此浏览器试图使用跨域资源