'Access-Control-Allow-Origin'标头包含多个值'*,*',但只允许一个

tri*_*gri 28 asp.net cors asp.net-web-api angularjs

我正在使用Angular和asp.net API.我面临的问题:当我在API代码中添加CORS时,它可以在Internet Explorer上运行,但在Chrome和Firefox上不起作用.

这是错误:

XMLHttpRequest无法加载http:// localhost:41028/api/values/abc.'Access-Control-Allow-Origin'标头包含多个值'*,*',但只允许一个.因此,不允许来源" http:// localhost:44796 "访问.

这是我在web.config文件中添加的代码:

<system.webServer>
...
<httpProtocol>
  <customHeaders>
      <!-- Adding the following custom HttpHeader will help prevent CORS errors -->
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

WebApiConfigFile.cs我添加的文件中:

var CorsAttribute = new EnableCorsAttribute("* ","* ", "* ");
        config.EnableCors(CorsAttribute);
Run Code Online (Sandbox Code Playgroud)

我是第一次使用CORS.任何帮助将不胜感激.

Abh*_*ine 41

您正在设置两次CORS.我认为这是问题所在.

请删除任何一个CORS设置.您可以从中删除web.configWebApiConfigFile.cs.

  • 那也是我的问题。谢谢! (2认同)

小智 5

Chrome 和 Firefox 使用“OPTIONS”动词使用所谓的飞行前检查。

因此,您必须将“OPTIONS”添加到 web.config 中允许的方法中。您可能还需要向 Application_Begin 请求添加一些代码,就像这个答案建议的那样: 处理对 ASP.NET MVC 操作的 CORS 预检请求

以下是 CORS 的一些资源:

IIS 劫持 CORS 预检选项请求

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api