【问题标题】:Angular Keycloak The 'Access-Control-Allow-Origin' header contains multiple values '*Angular Keycloak 'Access-Control-Allow-Origin' 标头包含多个值 '*
【发布时间】:2017-11-10 23:35:24
【问题描述】:

我已经部署了启用 keycloak 的前端 Angular 应用程序。还有一个基于java rest的通信后端。当我运行应用程序 keycloak 时显示登录页面,然后在我登录后它不显示任何内容。

XMLHttpRequest 无法加载 http://test.ssdiary.com:2222/auth/realms/app1/protocol/openid-connect/token。对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头包含多个值“*,http://test.ssdiary.com”,但只允许一个。因此,不允许访问 Origin 'http://test.ssdiary.com'。

GET http://test.ssdiary.com:2222/auth/realms/app1/protocol/openid-connect/login…ame.html/init?client_id=srms-frontend&origin=http%3A%2F%2Ftest.ssdiary.com 403(禁止)强文本

网络标签的标题

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:accept, authorization, content-type, x-requested-with
Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1
Connection:keep-alive
Content-Length:0
Date:Fri, 09 Jun 2017 04:57:38 GMT
Server:WildFly/10
X-Powered-By:Undertow/1

【问题讨论】:

  • 您能告诉我们您的请求标头吗?
  • 来自控制台网络选项卡。对吗?
  • @31piy 检查更新的问题

标签: angularjs keycloak


【解决方案1】:

请阅读Access-Control-Allow-Origin标头here的规范。

对于没有凭据的请求,服务器可以将“*”指定为通配符,从而允许任何来源访问资源。

您在请求中设置了Access-Control-Allow-Credentials:true。因此,不允许多个来源访问返回的内容。尝试从您的服务器发送单个来源作为 Access-Control-Allow-Origin 的值。

【讨论】:

  • Access-Control-Allow-Credentials:true 更改为Access-Control-Allow-Credentials:false 会解决我的问题吗??
  • 是的!这应该。或者尝试从请求中完全删除该标头。
  • 不,同样的错误。我在 keycloak.json 文件中添加了Access-Control-Allow-Credentials:false
  • @boycod3 - 您不能简单地将其设置为false,API 也应该需要将其关闭。为什么不从 API 响应标头中删除 *
猜你喜欢
  • 2019-04-05
  • 2016-10-02
  • 2020-02-04
  • 2019-01-08
  • 2023-03-24
  • 2018-01-06
  • 1970-01-01
  • 2019-04-09
相关资源
最近更新 更多