如何在 IIS 上正确设置 CORS?

Posted

技术标签:

【中文标题】如何在 IIS 上正确设置 CORS?【英文标题】:How to set up CORS properly on IIS? 【发布时间】:2016-08-12 11:45:46 【问题描述】:

我最近开始开发一个 PhoneGap 移动应用程序,该应用程序将进行身份验证并与 ASP.NET WebApi Web 服务一起使用。我早期的一个问题是使用 web.config 中的设置在 IIS 中启用 CORS:

<system.webServer>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>

此设置在我的 .NET WebAPI 应用程序中。从上面看,它似乎为所有人打开了访问控制,但我不确定还有什么可能进入标题的值部分。移动应用程序(htmljavascript 等)都在移动设备上,通过 jQuery 调用服务器上的 API。

我的 API / HTML 似乎在上述设置到位的情况下按预期工作。如果我删除它,我会收到 CORS 错误。以上是正常的,还是应该更具体一些?

【问题讨论】:

嗨,LTMOD,我的回答是否适合您,如果您不适合,请告诉我,谢谢 嗨,威利,对不起,不。我的问题更多是关于是否应该允许值中的星号,或者是否应该更具体。如果您只是要让每个人都可以访问该资源,那么我一开始就没有看到 CORS 的意义。 是的,你是对的,但在我的情况下,通常使用身份验证和授权来保护你的数据,希望这条消息可以帮助你,谢谢 【参考方案1】:

你好尝试把代码 WebApiConfig 像下面的代码一样

 public static class WebApiConfig
    
        public static void Register(HttpConfiguration config)
        
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/controller/action/id",
                defaults: new  id = RouteParameter.Optional 
            );
            config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
        

顺便说一下,您必须为 Nuget 的 EnableCors 下载“Microsoft.AspNet.WebApi.Cors”

【讨论】:

【参考方案2】:

此链接详细描述了 CORS 以及它如何与 WebAPI 一起使用。 http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#enable-cors

【讨论】:

以上是关于如何在 IIS 上正确设置 CORS?的主要内容,如果未能解决你的问题,请参考以下文章

IIS 上的 Net Core Cors 和 Angular 应用程序

如何在 IIS 中提供静态文件(用于 CORS / OPTION 请求)?

如何正确设置 CORS 以将带有 presignedUrl 的文件上传到 Firebase 存储?

如何测试CORS头

如何在IIS上创建机器密钥?

如何正确设置 GET/POST 获取的标头以避免 CORS