Asp.net Azure-网站调用API-The';访问控制允许原点';标头包含多个值';**';,但只有一个是允许的

Asp.net Azure-网站调用API-The';访问控制允许原点';标头包含多个值';**';,但只有一个是允许的,asp.net,azure,cors,azure-web-app-service,azure-api-apps,Asp.net,Azure,Cors,Azure Web App Service,Azure Api Apps,我在Azure中有一个网站正在调用API(也在Azure中) 当我发布网站和API并尝试了几次后,我可以获得数据,但不能发布或删除。它说的是“访问控制允许来源”标题未设置 所以我开始摆弄CORS(我已经在控制器中安装了) [EnableCors(来源:“*”,标题:“*”,方法:“获取”)] ,并在WebApiConfig中 var cors=newenableCorsattribute(“*”、“*”、“*”); config.EnableCors(cors); 根据这个文档,当我在本地运行这

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

当我发布网站和API并尝试了几次后,我可以获得数据,但不能发布或删除。它说的是“访问控制允许来源”标题未设置

所以我开始摆弄CORS(我已经在控制器中安装了)

[EnableCors(来源:“*”,标题:“*”,方法:“获取”)]

,并在WebApiConfig中

var cors=newenableCorsattribute(“*”、“*”、“*”);
config.EnableCors(cors);

根据这个文档,当我在本地运行这些服务时,它通常是有效的 )

现在,在一切都不起作用并且我恢复到原始状态(GET工作时)之后,我在Chrome的控制台中不断出现以下错误:

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

在Firefox中:

原因:CORS标头“访问控制允许来源”不匹配(null)


我没有访问.htaccess的权限。我检查了我提到的服务中是否有其他与CORS相关的代码,从我所知道的来看,这只是上面描述的内容。我还试图对上面的代码进行注释,但错误仍然保持不变。

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


我只留下了
config.EnableCors()在App_Start/WebApiConfig.cs中

并在控制器中使用了
[EnableCors(来源:“*”,标题:“*”,方法:“*”)

注意:一切都解决后,我将“
源代码”
”从“
*
”更改为使用API的网站地址


我发现另一个有用的指南是:

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

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


在EnableCorsAttribute中只尝试一个“*”?您有任何更新吗?@TomSun MSFT I left only
config.EnableCors()
在App_Start/WebApiConfig.cs中,并在控制器中使用了
[EnableCors(origins:*”,headers:*”,methods:*”
(在一切都解决后,我将“origins”从“*”更改为使用API的网站地址)。这里有另一个我觉得有用的指南:我很高兴你已经解决了它。您是否尝试从azure门户设置它?根据我的经验,它也会起作用。如果你将你的解答添加到答案中,这将帮助更多社区。谢谢,我没有意识到这会覆盖应用中的设置。在门户中未启用此功能,但在应用程序中配置有效时,会出现奇怪的行为。