【发布时间】:2017-04-21 15:06:42
【问题描述】:
我在 Azure 中有一个网站正在调用 API(也在 Azure 中)。
当我发布网站和 API 并尝试了几次后,我可以 GET 数据,但不能 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 相关的代码,据我所知,这只是上面描述的内容。我也尝试评论上面的代码,错误仍然保持不变。
【问题讨论】:
-
在 EnableCorsAttribute 中只尝试一个“*”?
-
你有什么更新吗?
-
@TomSun-MSFT 我在 App_Start/WebApiConfig.cs 中只留下了
config.EnableCors();,并在控制器中使用了[EnableCors(origins: "*", headers: "*", methods: "*")](一切顺利后,我将“起源”从“*”更改为使用 API 的网站的地址)。这是我发现有用的另一个指南:c-sharpcorner.com/article/… -
我很高兴你已经解决了。您是否尝试从 azure 门户设置它?根据我的经验,它也会起作用。
-
如果你添加你的解决方案来回答这将有助于更多的社区。span>
标签: asp.net azure cors azure-web-app-service azure-api-apps