CORS在web-api上有100个问题,以及如何启用CORS,每个人都提供了不同的答案.我很困惑,不知道哪个答案是正确的.而且问题是没有一个答案实际上解释了它是明智的,每行代码的作用,所以我可以理解和解决我的问题,而不是复制粘贴代码.
无论如何,问题是:我正在使用asp.net web api 2使用owin.我需要启用CORS.我该怎么做? OWIN有cors设置
application.UseCors(CorsOptions.AllowAll);
并有asp.net web api的cors设置
var cors = new EnableCorsAttribute("*","*","*"); config.EnableCors(cors);
我应该使用哪一个,因为我不使用OAUTH(我指定这个,因为在我们不使用OAUTH v / s的时候,对于SO的答案有所不同).
我需要为OWIN& WEB-API或其中一个.如果两者都启用,则会出现问题,read here
如果有人可以解释我的区别,这将是非常有帮助的
> OWIN CORS
> WEB API CORS
> CORS与OAUTH使用OWIN / WEBAPI
此外,还有针对owin托管的web-api的自我托管的web api的答案,这进一步增加了暗示:(对不起,
解决方法
如果您需要将CORS应用于您的API控制器,则应使用Web API的CORS.对于其他一切(像令牌服务),你就不得不使用Owin.Cors.
如果最终使用两者,则需要确保它们不重叠,并将CORS应用于同一请求两次.
Web API 2.2可以通过提供EnableCorsAttribute来轻松启用CORS.
基本用法
[EnableCors("*","*")] public class ResourcesController : ApiController { ...
属性定义
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple = false)] public EnableCorsAttribute( string origins,string headers,string methods )
使CORS全球使用
public static class WebApiConfig { public static void Register(HttpConfiguration config) { var cors = new EnableCorsAttribute("www.example.com","*"); config.EnableCors(cors); // ... } }
您还需要从nuget安装CORS软件包
Install-Package Microsoft.AspNet.WebApi.Cors