Azure - 网站调用AP​​I - “Access-Control-Allow-Origin”标头包含多个值'*,*',但只允许一个

时间:2017-04-21 15:06:42

标签: asp.net azure cors azure-web-sites azure-api-apps

我在Azure中有一个调用API的网站(也在Azure中)。

当我发布网站和API,并尝试了几次,我可以获取数据,但不能POST或DELETE。它说的是“Access-Control-Allow-Origin”标题没有设置。

所以我开始使用CORS(我已经在控制器中

[EnableCors(origins: "*", headers: "*", methods: "GET")]

,以及WebApiConfig

var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors);

根据此文档,我在本地运行服务时曾经工作过 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

现在,在没有任何工作之后我恢复到原始状态(当GET工作时),我一直在Chrome中的控制台中出现这个错误:

  

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

这在Firefox中:

  

原因:CORS标头'Access-Control-Allow-Origin'与'(null)'

不匹配

我无法访问.htaccess。我检查了我在提到的服务中是否有其他与CORS相关的代码,从我所知道的,它只是上面描述的内容。我还尝试评论上面的代码,错误仍然保持不变。

3 个答案:

答案 0 :(得分:1)

您是否尝试在Azure门户上配置它?如果没有,请尝试在Azure WebAPI站点上进行配置。更多细节请参考截图。 我们还可以从Azure official document获取相关信息。

enter image description here

答案 1 :(得分:0)

我遇到了同样的错误,但在我的情况下,解决方案是从web.config中删除这些行来修复它。

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

答案 2 :(得分:-1)

我在App_Start / WebApiConfig.cs中仅 config.EnableCors();

在控制器中使用[EnableCors(origins: "*", headers: "*", methods: "*")]

注意:完成所有问题后,我将“origins”从“*”更改为使用API​​的网站地址。

这是我觉得有用的另一个指南:http://www.c-sharpcorner.com/article/fix-to-no-access-control-allow-origin-header-is-present-or-w/