ASP.net MVC5中的asp.net-mvc – CORS
发布时间:2020-12-15 18:33:03 所属栏目:asp.Net 来源:网络整理
导读:我有一个MVC项目,其中有几个JSON控制器方法我想要暴露跨域。不是整个网站,只是这两种方法。 我基本上想要在这篇文章中提到的确切的事情: http://enable-cors.org/server_aspnet.html 但是,问题是我有一个常规的MVC项目而不是一个WEB API,这意味着我无法
我有一个MVC项目,其中有几个JSON控制器方法我想要暴露跨域。不是整个网站,只是这两种方法。
我基本上想要在这篇文章中提到的确切的事情: http://enable-cors.org/server_aspnet.html 但是,问题是我有一个常规的MVC项目而不是一个WEB API,这意味着我无法遵循注册的步骤 public static void Register(HttpConfiguration config) { // New code config.EnableCors(); } 方法,因为它不存在于我的MVC项目中。 有没有办法使用这个库,虽然它是一个MVC项目? 我知道我可以通过web.config配置它: <httpProtocol> <customHeaders> <clear /> <add name="Access-Control-Allow-Origin" value="http://www.domain.com" /> </customHeaders> </httpProtocol> 但是我不想公开所有的方法,我想指定多个域(2个域)来访问我的方法… 解决方法
如下所述:
Setting Access-Control-Allow-Origin in ASP.Net MVC – simplest possible method
您应该创建一个操作过滤器并将标题设置在那里。您可以随时随地使用此操作过滤器对您的操作方法。 public class AllowCrossSiteJsonAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin","*"); base.OnActionExecuting(filterContext); } } 如果要添加多个域,您不能只是多次设置标题。在您的操作过滤器中,您将需要检查请求域是否来自您的域列表,然后设置标题。 public override void OnActionExecuting(ActionExecutingContext filterContext) { var domains = new List<string> {"domain2.com","domain1.com"}; if (domains.Contains(filterContext.RequestContext.HttpContext.Request.UrlReferrer.Host)) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin","*"); } base.OnActionExecuting(filterContext); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 动态URL路由ASP MVC
- asp.net-mvc-3 – 在MVC3中设置所选选项
- asp.net-mvc – 为什么MvcApplication.RegisterRoutes被定义
- asp.net – gridview在viewstate中保存数据吗?
- asp.net-mvc – MVC OAUTH VS2012模板,在哪里输入redirect_
- asp.net-mvc – 创建/编辑父和子窗体MVC
- 如何在asp.net Web应用程序(C#)中制作倒数计时器?
- entity-framework – 实体类型没有键定义的EF6
- asp.net下经典数据库记录分页代码
- ASP.NET 5自定义错误页面无法在Azure网站上呈现
推荐文章
站长推荐
热点阅读