asp.net – 有没有办法动态更新Web API CORS中允许的来源列表
发布时间:2020-12-16 04:29:11 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试为我的.Net Web API应用程序中的某些域启用CORS,并且能够通过此代码在Application Start上执行此操作. public static void Register(HttpConfiguration config){ //below comma separated string is built from database var domains = "http://ww
我正在尝试为我的.Net Web API应用程序中的某些域启用CORS,并且能够通过此代码在Application Start上执行此操作.
public static void Register(HttpConfiguration config) { //below comma separated string is built from database var domains = "http://www.myfirstdomain.com,http://www.myseconddomain.co.uk .... about 130 domains more.."; config.EnableCors(new EnableCorsAttribute(domains,"*","*")); 但是,如果在应用程序处于活动状态时添加了新域,则在回收应用程序池并再次构建此列表之前,将不允许这些域发布. 有没有什么办法可以在我的应用程序生命周期内更新此列表?我知道我可以定期回收应用程序池,但这会导致某些请求出现延迟,理想情况下这些请求可能没有. 我知道我可以在控制器方法上启用它,即.. [EnableCors("http://domain1.com,http://domain2.com","*")] public HttpResponseMessage PostAsync([FromBody] MyRequest myRequest) { 但是,逗号分隔参数必须再次声明为常量,因此不能是动态的. 我是否遗漏了一些明显的或者是否有人想到这样做的好方法? 编辑 这是我尝试编写自己的自定义EnableCors属性. [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,AllowMultiple = false)] public class EnableCorsByDomainAttribute : Attribute,ICorsPolicyProvider { private readonly CorsPolicy _policy; public EnableCorsByDomainAttribute() { _policy = new CorsPolicy { AllowAnyMethod = true,AllowAnyHeader = true }; var originsString = "http://www.test1.com,http://www.test2.com"; if (!String.IsNullOrEmpty(originsString)) { foreach (var origin in originsString.Split(',')) { _policy.Origins.Add(origin); } } } public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request,CancellationToken cancellationToken) { return Task.FromResult(_policy); } } 然后我用控制器方法装饰了 [EnableCorsByDomain] 解决方法
是的,Web API CORS为这种场景提供了可扩展性点.您可以在以下Web API功能规范文档中查看名为“实现自定义ICorsPolicyProvider”的部分以获取更多详细信息.
http://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API&referringTitle=Specs (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-2 – 使用Ninject返回null的HttpHandler属性注
- asp.net-mvc-3 – 检查ViewBag是否具有属性,以有条件地注入
- Asp.Net Mvc中动态数据的替代方案
- asp.net – 可以为IIS的HTTP压缩添??加axd扩展吗?
- asp.net-mvc – Azure托管的ASP.NET MVC网站删除与客户端缓
- asp.net-mvc – 我的web.config中没有角色管理器部分定义
- asp.net-mvc – ActionResult返回类型的要点是什么?
- .net – 新的单元测试
- Ajax.BeginForm()知多少
- dotnetcore3.1 WPF 中使用依赖注入
推荐文章
站长推荐
- asp.net – 检测Internet Explorer浏览器版本问题
- 在ASP.NET MVC中通过URL路由实现对多语言的支持
- 登录的用户无效.Memership服务. asp.net
- asp.net-mvc – 如何在MVC Filter属性中解析依赖
- ASP.NET Core WebAPI 实现CRUD
- asp.net-mvc-3 – 如何在Razor视图引擎中注册程序
- asp.net – 文件下载问题:文件名与空格被截断!
- asp.net – 使用javascript从Formview获取对象
- asp.net – 从Global.asax中获取操作的绝对URL路
- asp.net – 如何将一个对象序列化为查询字符串格
热点阅读