我有一个Owin WebAPI2 .NET应用程序,我在Azure的AppService上托管它。
我想添加CORS支持使用Azure作为在本文中。看起来很简单,您只需在列表中添加一个原产地站点,如:http://screencast.com/t/r2ATq4u5
现在,我希望响应头包含这个允许的开始。
但是,当我使用Fiddler:http://corstestqm.azurewebsites.net/breeze/restaurantsbreeze/basictest检查CORS头时,它不包括在响应头中。
我尝试过的步骤:
所有这些都没有任何效果。(即)响应不包含Azure中指定的CORS头)。
我是不是错过了一些最基本的东西?
UPDATE I进一步简化了问题:在VS2015中,我创建了一个新的API项目,并将其推送到http://corstestbasicap2.azurewebsites.net/api/values/中,没有进行任何更改(即。它不应该启用CORS )。
然后,我使用测试-Cors工具来访问该API。它不会得到预期的CORS错误。然后进入Azure,添加一个虚拟URL (例如http://www.example.com),并再次尝试CORS测试。它应该失败,因为Azure应该只允许example.com通过。不过,它很好用。
然后,我将在Azure中再次编辑CORS和http://www.test-cors.org添加到http://www.example.com下面(因此应该让它通过),现在标头会按预期返回Access-Control-Allow-Origin:http://www.test-cors.org。
但这毫无意义?当"http://www.test-cors.org“不在允许的起源中时,以前的调用肯定会失败吗?它似乎没有做任何有用的事情?!
发布于 2017-01-09 07:46:45
您可以通过添加web.config下面的配置来实现这些目标:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept,Authorization"/>
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
</customHeaders>
</httpProtocol>
</system.webServer>在global.asax中:
protected void Application_BeginRequest()
{
if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
{
Response.Flush();
}
}如果您想要从门户获得控制,请查看下面的图像:
注意,根据API 文档,您不能在一个API应用程序中同时使用Web和API。您必须清理有关Web的项目
不要在一个API应用程序中同时使用和。将优先考虑,而Web将没有任何影响。例如,如果在App中启用一个源域,并在Web API代码中启用所有源域,则Azure API应用程序将只接受您在Azure中指定的域的调用。

发布于 2018-05-10 10:37:04
我的问题是我不小心把http而不是https放到Azure AD B2C自定义页面配置刀片中.在换到https之后,它就像一种魅力。
https://stackoverflow.com/questions/41541917
复制相似问题