我在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相关的代码,从我所知道的,它只是上面描述的内容。我还尝试评论上面的代码,错误仍然保持不变。
答案 0 :(得分:1)
您是否尝试在Azure门户上配置它?如果没有,请尝试在Azure WebAPI站点上进行配置。更多细节请参考截图。 我们还可以从Azure official document获取相关信息。
答案 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/