【问题标题】:Google Chrome: A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is trueGoogle Chrome:当凭证标志为真时,不能在“Access-Control-Allow-Origin”标头中使用通配符“*”
【发布时间】:2017-01-10 06:01:33
【问题描述】:

我知道这很常见,对于早期版本的 chrome,我曾经设置“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe”--args --disable-web-security --user-data-dir 在 chrome 快捷方式选项卡中避免“访问控制允许来源”错误。使用最新版本,此修复似乎不再有效。安装最新版本后 53.0.2785.89 m 这是控制台的错误

XMLHttpRequest 无法加载 https://example.org:15003/apps/services/preview/rr/common/1.0/default/index.html。对预检请求的响应未通过访问控制检查:当凭证标志为真时,不能在“Access-Control-Allow-Origin”标头中使用通配符“*”。因此,Origin 'http://ibm-pb7en65:10080' 不允许访问。 XMLHttpRequest 的凭据模式由 withCredentials 属性控制。

我不确定要添加哪些附加属性以避免“Access-Control-Allow-Origin”错误。有什么方法可以实现吗?

【问题讨论】:

  • “使用最新版本,此修复似乎不再有效。” 这不是修复,它是您仅在开发中使用的标志。希望您没有像那样在禁用安全性的情况下上网!
  • which additional attributes are to be added - 除了什么?您根本没有显示任何代码,所以我们应该猜测您当前在做什么吗?
  • --args --disable-web-security --user-data-dir 标志已设置,我需要添加任何其他标志吗?

标签: javascript angularjs google-chrome xmlhttprequest accesscontrolexception


【解决方案1】:

错误是告诉你服务器发回了这个响应头:

访问控制允许来源:*

...在凭据请求上。那是行不通的。对于带有凭据的请求,服务器必须返回一个特定 Access-Control-Allow-Origin 标头。

由于您是从http://ibm-pb7en65:10080/ 发出请求,因此您的服务器必须发回此标头:

访问控制允许来源:http://ibm-pb7en65:10080

它不能使用通配符*

解决办法是:

  • 更新服务器以执行此操作,或者
  • 从请求中删除凭据

详细信息,一如既往,in the specification

【讨论】:

  • 嗨克劳德,感谢您的回复。
  • 我应该不更新服务器。我正在使用 angular $http get 调用,如果我没记错的话,默认情况下 withCredentials 属性由 Angular 设置为 true。有没有其他方法可以解决这个问题。提醒您,之前使用旧版 chrome 的相同代码。
  • 我设法通过这个标志解决了这个问题 --user-data-dir="C:\Users\IBM_ADMIN\AppData\Local\Temp"
猜你喜欢
  • 2014-12-12
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2014-07-08
  • 2018-10-09
相关资源
最近更新 更多