博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebApi系列~开放的CORS,跨域资源访问对所有人开放
阅读量:7031 次
发布时间:2019-06-28

本文共 1578 字,大约阅读时间需要 5 分钟。

之前有客户问我,如何AJAX跨域post,这个问题挺有意思,在我们看来,我是不被允许的,因为它是不安全的,但随着web api的火热,这个东西也被人们一步步的接受了,确实,有时,我们的接口希望对所有人公开,它并不在乎有人恶意去POST灌数据,呵呵!

实现思路:向HTTP请求头添加跨域标识Access-Control-Allow-Origin,将它的值设为*即可,当然如果你一个个页面去加那就太麻烦了,也不推荐,有一天老总感觉这是不安全的了,让你去掉它,只你可就麻烦大了,哈哈,所以,还有找个全局点吧!

开放的CORS过滤器,只对类开放,不支持方法单独设置

///     /// 开放cors协议,支持跨域访问    ///     [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]    public class OpenCorsAttribute : ActionFilterAttribute    {        ///         /// 开放cors协议,支持跨域访问的初始化        ///         public OpenCorsAttribute()        {        }        ///         ///在action渲染之前        ///         ///         public override void OnActionExecuting(ActionExecutingContext filterContext)        {            var responseHead = filterContext.RequestContext.HttpContext.Response.Headers;            if (responseHead != null)            {                responseHead.Add("Access-Control-Allow-Origin", "*");            }            base.OnActionExecuting(filterContext);        }    }

使用它也非常简单

[OpenCorsAttribute]    public class HomeController : AsyncController    {
}

而如果希望所有控制器都添加这个特性,可以在FilterConfig类中去添加全局过滤器

public static void RegisterGlobalFilters(GlobalFilterCollection filters)        {            filters.Add(new OpenCorsAttribute());            filters.Add(new GlobalErrorAttribute());            filters.Add(new HandleErrorAttribute());            filters.Add(new UrlRuleFilterAttribute());        }

这样,你所有的Action也被破加上了这个特性,当然,如果你手动向Action上这是不被允许的,因为我们设置了AttributeUsage(AttributeTargets.Class),呵呵

程序截图

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
JavaScript 算法之复杂度分析
查看>>
第六章——函数(inout参数与变异方法)
查看>>
掘金翻译计划月报 — 2018 年 2 月
查看>>
Android属性动画
查看>>
渐进式Express源码学习5-全副武装
查看>>
JVM难学?那是因为你没认真看完这篇文章
查看>>
python面试题(五)
查看>>
老司机 iOS 周报 #40 | 2018-10-22
查看>>
VirtualView iOS 模板加载功能实现详解
查看>>
这可能是最好的性能优化教程(二)
查看>>
被马化腾点赞的微信车票设计,背后有哪些故事?
查看>>
Spring理论基础-面向切面编程
查看>>
BloomFilter 原理,实现及优化
查看>>
PHP本地文件包含漏洞环境搭建与利用
查看>>
OGNL设计及使用不当造成的远程代码执行漏洞
查看>>
Vue-cli + express 构建的SPA Blog(采用前后端分离方案)
查看>>
ios中的多播委托
查看>>
Java基础-单例模式
查看>>
轻仿QQ音乐之音频歌词播放、锁屏歌词
查看>>
MongoDB 4.0 RC 版本强势登陆
查看>>