Azure WebApp Cors不添加Cors头

Azure WebApp Cors不添加Cors头,azure,cors,azure-web-app-service,Azure,Cors,Azure Web App Service,我有一个Owin WebAPI2.NET应用程序,我在Azure的AppService上托管该应用程序 我想使用Azure as添加CORS支持。看起来很简单,您只需向列表中添加一个源站点,如下所示: 我现在希望响应头包含这个允许的来源 但是,当我使用Fiddler检查时,CORS头不包括在响应头中: 我尝试过的步骤: 从我的解决方案中剥离所有CORS Nuget库以及API项目中的所有CORS代码跟踪 部署到全新的AppService 异壁 这些都没有任何效果。(即,响应不包含Azure

我有一个Owin WebAPI2.NET应用程序,我在Azure的AppService上托管该应用程序

我想使用Azure as添加CORS支持。看起来很简单,您只需向列表中添加一个源站点,如下所示:

我现在希望响应头包含这个允许的来源

但是,当我使用Fiddler检查时,CORS头不包括在响应头中:

我尝试过的步骤:

  • 从我的解决方案中剥离所有CORS Nuget库以及API项目中的所有CORS代码跟踪
  • 部署到全新的AppService
  • 异壁
这些都没有任何效果。(即,响应不包含Azure中指定的CORS标头)

我是不是错过了一些基本的东西

更新 我进一步简化了这个问题: 在VS2015中,我创建了一个新的API项目,并将其推到 无更改(即,不应启用CORS)

然后我用它来点击那个API。它没有得到预期的CORS错误。然后我进入Azure并添加一个虚拟URL(例如),然后再次尝试CORS测试。它应该失败,因为Azure应该只允许example.com通过。然而,它工作得很好

然后,我将其添加到下面(因此它应该让其中一个通过),现在标题返回
Access Control Allow Origin:http://www.test-cors.org
如预期


但这毫无意义?当“”不在允许的来源中时,上一次调用肯定会失败吗?它似乎没有做任何有用的事情

您可以通过在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>
如果您想从门户控制,请查看下图:

注意,根据应用程序服务CORS,您不能在一个API应用程序中同时使用Web API CORS和应用程序服务CORS。您必须清理关于Web API CORS的项目

不要试图在一个API中同时使用Web API COR和应用程序服务COR 应用程序。应用服务CORS优先,Web API CORS优先 没有效果。例如,如果您在应用程序中启用一个源域 服务,并启用Web API代码中的所有源域 Azure API应用程序将仅接受来自您在中指定的域的调用 蔚蓝


我的问题是我不小心将http而不是https放入Azure AD B2C自定义页面配置刀片。。。更改为https后,它就像一个符咒


嗨,Ionut,谢谢你,我发现web.config的方式是有效的,但是我想用Azure应用程序服务控制CORS,因为每个应用程序服务槽都有不同的要求(我知道我可以用debug webconfigs实现这一点)。我的问题是为什么Azure CORS功能不能按预期工作?嗨,罗德尼,你可以从门户控制每个插槽的CORS标题:选择YOUR应用程序、插槽,然后从刀片菜单选择CORS。你试过这个吗?我在我的回答中添加了一个图像Hi Ionut,是的,我已经这样做了,但它不起作用(这就是我的问题所在-请参阅我原始问题中的屏幕截图链接)。它的行为似乎很怪异,而且平淡不起作用。嗨,罗德尼,我根据你的需要更新了我的帖子。关于Ionut,我感谢您的努力,但是这是我在上面的问题中尝试的第一步(去掉所有CORS库,只使用Azure)。它不起作用。Azure应用程序服务cors标头未发出
protected void Application_BeginRequest()
{
  if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
  {
    Response.Flush();
  }
}