当我有“Access-Control-Allow-Origin:*”时,“Access-Control-Allow-Origin”出错

Posted

技术标签:

【中文标题】当我有“Access-Control-Allow-Origin:*”时,“Access-Control-Allow-Origin”出错【英文标题】:Error with "Access-Control-Allow-Origin", when i have "Access-Control-Allow-Origin: *" 【发布时间】:2017-06-15 11:32:45 【问题描述】:

我有错误:

XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。一种 通配符 '*' 不能在 'Access-Control-Allow-Origin' 中使用 当凭证标志为真时标头。原点“http://localhost”是 因此不允许访问。凭据模式 XMLHttpRequest 由 withCredentials 属性控制。

但我有标题:

res.header("Access-Control-Allow-Origin", "*");

我该如何解决这个问题?

【问题讨论】:

打开浏览器调试器并检查网络面板是否响应头包含 Access-Control-Allow-Origin:* 【参考方案1】:

您可以通过让http://localhost:5984/cp_config/ 的服务器端代码将Origin request-header 值回显到Access-Control-Allow-Origin response-header 值来修复它。

有关错误原因的详细信息,请参阅 MDN 上的“Credentialed requests and wildcards”。

如何将Origin request-header 值回显到Access-Control-Allow-Origin response-header 值取决于用于服务http://localhost:5984/cp_config/ 的Web 服务器和服务器端编程环境(如果有)。

有一些 Web 服务器和编程环境具有良好的 CORS 库,这使得它非常容易实现,还有一些其他的,例如 Apache,几乎不可能单独使用它们来实现支持 CORS 的内容交付添加一些 Python 东西或 php 或其他任何东西,以允许对所需的标头值进行访问。

【讨论】:

【参考方案2】:

你能试试把这个添加到 web.config 中

<system.webServer>
  <httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>
</system.webServer>

【讨论】:

以上是关于当我有“Access-Control-Allow-Origin:*”时,“Access-Control-Allow-Origin”出错的主要内容,如果未能解决你的问题,请参考以下文章

ABP PUTDELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow

在哪里启用cors?

带有远程 URL 的 JSONP 不起作用

无法访问 api post 方法,总是请求 OPTIONS

ExpressJS 不同的域名 - CORS

从浏览器发送两个请求,但只调用 localhost