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

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

管翼
2023-03-14

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

登录后,/tokenendpoint上重复的'Access-Control-Allow-Origin'会导致CORS错误:

CORS策略阻止从来源“https://example.com”访问位于“https://accounts.example.com/auth/realms/myrealm/protocol/openid-connect/token”的XMLHttpRequest:“access-control-allog-origin”标头包含多个值“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

KeyCloak9以独立模式运行在https://accounts.example.com上的Nginx代理后面。

keycloak-js适配器配置:

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

共有1个答案

云煌
2023-03-14

*不是运行在HTTPS上的站点的Access-Control-Allow-Origin的有效值。

从Keycloak中的web origins客户机配置中删除*,并显式配置所有使用的web Origine,(不使用wildchars)。

 类似资料:
  • 我在React前端使用keycloak-js适配器时遇到了一个问题。 登录后, 终结点上重复的“访问控制-允许-源”会导致 CORS 错误: CORS策略阻止了从源https://example.comhttps://accounts.example.com/auth/realms/myRealm/protocol/openid-connect/token对XMLHttpRequest的访问:访问

  • 我在AngularJS中创建了一个应用程序,并尝试调用Laravel API: MyApp(AngularJS):http://localhost:8080/ API(Laravel样板文件):http://localhost:8000/ api_routes.php:

  • 我有错误: XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。当凭据标志为 true 时,不能在“访问控制-允许-源”标头中使用通配符“*”。因此,不允许访问源“http://localhost”。XMLHttpRequest 的凭据模式由 withCredentials 属性控制。 但我有一个标题: 我该如何解决这个问题?

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

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

  • 嗨,我不能禁用CORS在我的项目。我为CORS配置使用了自定义过滤器和Spring Security配置。我见过这个极好的答案:你能在Spring中完全禁用CORS支持吗? 但是当我尝试下面的实现时,我仍然得到CORS错误: CORS配置:

  • 我在vHost中设置了。 但是现在我遇到了这样一个错误: CORS策略阻止从来源'http://localhost:3000'访问xxx处的XMLHttpRequest:'Access-Control-Allow-Origin'标头包含多个值'http://localhost:3000,*',但只允许一个值。 你知道怎么回事吗?是服务器端的问题还是我应该在axios配置中设置一些东西? 谢了。

  • 问题内容: 我尝试使用以下代码通过$ http(角度)发送http请求: 但这不起作用,并且我在Web控制台中有此错误: 你有解决方案吗 ? 问题答案: 您看到此错误是由于在浏览器中实现的称为Same Origin Policy的安全机制所致。 基本上,这是由于您的网页尝试访问驻留在与网页本身不同的主机,端口或方案(HTTP / HTTPS /文件等)所在的服务器上的资源而引起的。 为了解决此问题