如何在 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 应用程序中。从上面看,它似乎为所有人打开了访问控制,但我不确定还有什么可能进入标题的值部分。移动应用程序(html、javascript 等)都在移动设备上,通过 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 请求)?