【发布时间】:2017-07-01 04:26:09
【问题描述】:
我在 Stackoverflow 上找不到解决方案后解决了这个问题,所以我在这里分享我的问题并在答案中分享解决方案。
使用 AddCors 在我的 .NET Core Web Api 应用程序中启用跨域策略后,它仍然无法在浏览器中运行。这是因为浏览器(包括 Chrome 和 Firefox)会首先发送一个 OPTIONS 请求,而我的应用程序只会以 204 No Content 响应。
【问题讨论】:
-
失败的具体情况是什么?如果它是“对于任何执行 CORS 的 chrome/ff 浏览器来说它总是失败”,那么框架怎么还没有涵盖呢?似乎这将是一个相当大的遗漏。
-
我同意。然而,事情就是这样。该框架将允许您使用内置功能执行 CORS,但它不处理 OPTIONS 调用,这是正常使用来自浏览器的跨域 api 调用的要求。但是,您可以通过进行更简单的调用来避免它,例如将类型设置为 text/plain 和其他一些东西。那么浏览器就不会先调用 OPTIONS 了。
-
IIS 应该是处理这些事情的人,所以任何在 2017 年 11 月之后阅读本文的人都应该使用 IIS CORS 模块,blogs.iis.net/iisteam/introducing-iis-cors-1-0
-
是或在 Azure App Service 上,似乎在过去几年中,在 Azure 中设置 CORS 并允许某些域或所有域 (*) 就足够了。当 CORS 中没有配置域时,上述内容将在 Azure 上运行,这显然意味着 Azure 让应用程序自己处理 CORS。
标签: c# asp.net-core .net-core asp.net-core-webapi