WebApi系列~开放的CORS,跨域资源访问对所有人开放
之前有客户问我,如何AJAX跨域post,这个问题挺有意思,在我们看来,我是不被允许的,因为它是不安全的,但随着web api的火热,这个东西也被人们一步步的接受了,确实,有时,我们的接口希望对所有人公开,它并不在乎有人恶意去POST灌数据,呵呵!
实现思路:向HTTP请求头添加跨域标识Access-Control-Allow-Origin,将它的值设为*即可,当然如果你一个个页面去加那就太麻烦了,也不推荐,有一天老总感觉这是不安全的了,让你去掉它,只你可就麻烦大了,哈哈,所以,还有找个全局点吧!
开放的CORS过滤器,只对类开放,不支持方法单独设置
/// <summary>
/// 开放cors协议,支持跨域访问
/// </summary>
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class OpenCorsAttribute : ActionFilterAttribute
{
/// <summary>
/// 开放cors协议,支持跨域访问的初始化
/// </summary>
public OpenCorsAttribute()
{
} /// <summary>
///在action渲染之前
/// </summary>
/// <param name="filterContext"></param>
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),呵呵
程序截图
aaarticlea/png;base64,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vNAtFt0VK9yVKz3L8tau9R5+2CuV/O3bgzffDD77rNeHBQAAeikNnUFDx2voDI4dC/bv93fs8Ddt8n79a3d42F2xwhkYcE491Tn1VGf5cnfFCu/++72f/9wbHfU2bvSfftrfvt2fmAj27g0+/DD4/PNeH0HvBZ9/Hnz4YbB3rz8x4W/f7m/e7G3c6I2Oej//uXv//e73vx+dz3/91/B8usPD3uiov2mTv2NHsH8/tVIAABaDNHQ2Xm+hh87ggw/8iQn/2We93/zGu+ce9z//07n00qhQd/757jXXuEND3v33e7/9LZW5Lgk+/TSqHP/2t97997tDQ+411zjnned85SvOaae5l13m/ud/evfc461f7z/7rD8xEUxN9brLAACgY47D0BlMT/s7dngbNrirV7s33+ycdZZz4onON7/pFovurbd6P/uZt2GD/9xz/htvBIcO9bqzqNfr9eDQIf/11/3nnvM2bPDWrHFvvdUtFp1vftM58UTnrLPcW25xV6/2Hn/cf/nl4PDhXncWAADMxIIPnYHjBNWqv2mTt2aNe911zumnO//2b+4113j33OPbtj8xERw4EPh+r7uJmQh8PzhwwH/1Vf93v/Puuce95hpn2TLn9NPd667z1qzxN20KqlXuuAcAYEFYeKEz2L/f37LFe+AB9+abnQsucE4+2bn0UnfVKm/9en98PPjww153EN0VfPihPz7urV/vDg05pumcfLLT3+/ecov3wAP+li3B/v297iAAANCY76HTP3jQf+kl77HH3Lvucq+4wjnlFOe889wbb/TWrfP/8pdg376e9ArzSrB3r//ss966de6NNzrnneeccop7xRXu6tXehg3+jh3+wYO97iAAAOho6Hx59ztDo8/cvK4k/m9o9M/jlbebblsa7u/v7x8u1ev1erBnj/fUU+5ttznnnONcdJH73e961y1f+41v/NeP7Py7xSdGB5MGNE0Pl4Qv2tseC0xw9Kj/2mu+bUcj8hdf7Jx7rnv77d5vfxu8+Wave5eYrtWm1WW18li5lvNtrTxezWyQNFYdFzfUvDBdLc9gcwAAOqaToXNo9Jkjnx8LgsBz3WNfHD3y6ceHD03VanuHRv/ceMPA27npsjPt793trlgRPljHu/tu/5c3D5179ehEuMrE6GAYCZVwGH7bP1wKvxiM108kG9brYewcHJ2ol4azTQyO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WPChMyv45BN/505v40bvRz9yb73VOfdc5+STnW98w738cvemm7yf/MR75BH/2Wf9114LpqbabDv79KJkSXilpFxFjF7JCZ31/PuQmuy0yQ1A4i6ENYUbieKmZ3UjUXrDz2wFU1P+q6/6zz7rPfKINzLi3nSTe/nlzmmnOSef7Jx7rrdyZZ1/IpgAACAASURBVPRPiHI5YE4gAAAWpuMwdGoFH33kVyr+c895jz7qrVnj3nKLe8UVzhlnOCed5Jxzjnv11e7Kld5993kbN/pbtwb/+AcPa+y44PDhYPduf+tWb+NG79573ZUr3auvds4+2znpJOeMM9x//3f3llu8NWu8xx7zn3vOr1SCgwd73WUAANAxiyV05gk8L3jvPX/nTn/zZu/BBz3Lcm+4wbn4YmfZMueUU5z+fvd733N/8Qvvpz/1fvUrb8MGv1Tyt271d+4M9uwJ3n+/h3fTzx/BkSPB++8He/b4O3f6W7f6mzZ5GzZ4v/qV99Ofer/4hfu97zkXXOCccoqzbJlzySXuDTd4luU99JC/ebO/c2dw4EDgeb0+AgAA0HWLPXQ2EBw9Guzd67/wgvf0094jj3i//KV3zz3u7be7N9zgXn21c9FFzplnOqee6nz5y86yZc555zmXXupee617003u6tXez37mjY56Tzzhb97sb9vm79oVvPVWMDXlHz0auG6vj6yRwHX9o0eDqangzTf9Xbv8bdv8zZu9J57wRke9NWvcu+5yb7rJvfZa59JLnfPOc5Ytc046yTn1VOfMM52LLnKvvtq94QZ3aMi75x7vl7/0HnnEe/pp/8UXg337gqNHe31kAACglwidsxW4bnD4cLB/v//GG/6LL/pjY75te7/5jXf//d6Pf+zedpt7/fXuVVc5F17onHGG853vOF/+snPiic5XvuL8y784X/ua8/WvO2ec4Zx9tnPeeU5/v3PRRc6ll7pXXOFedZV7zTXudde511/v3nije8st7sqV7qpV7urVnmV599zjrVnj3Xeft26dt26dd9993po13j33eJblrl7trlrlrlzp3nKLe+ON7vXXu9dd515zjXvVVe4VVziXXupcdJHT3++cf75z9tnOGWc4X/+687WvOf/yL85XvuKceKLz5S87V1/tnHGGMzDgXnWVe/317m23eT/+sXf//d769b5t+2Nj/osv+m+8EezfHxw+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" alt="" />
WebApi系列~开放的CORS,跨域资源访问对所有人开放的更多相关文章
- Spring Security (CORS)跨域资源访问配置
1.CORS介绍 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源(协议 + 域名 + 端口)服务 ...
- CORSFilter 跨域资源访问
CORS 定义 Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 ...
- JAVA跨域资源访问CORSFilter
当一个资源从与该资源本身所在的服务器不同的域或端口不同的域或不同的端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求.跨域资源共享机制允 ...
- apache如何解决跨域资源访问
很多时候,大中型网站为了静态资源分布式部署,加快访问速度,减轻主站压力,会把静态资源(例如字体文件.图片等)放在独立服务器或者CDN上,并且使用独立的资源域名(例如res.test.com) 但是在实 ...
- jsonp实现跨域资源访问
平时项目中处理ajax跨域资源请求时,例如www.example2.com上的某个页面要请求www.example1.com的数据,我们使用得较多的是jsonp方式.jsonp通过JavaScript ...
- 使Asp.net WebApi支持JSONP和Cors跨域访问
1.服务端处理 同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的DOM,“跨源”操作来源于B的页面将会被拒绝.同源策略以及跨域资源共享在大部分情况下针 ...
- ubuntu-apache如何解决跨域资源访问
参考:http://blog.csdn.net/emily201314/article/details/52877277 步骤1 #打开apache的headers模块 sudo a2enmod he ...
- asp.net webAPI POST方法的CORS跨域问题
端口不同会判断为不同域 Method Not Allowed . web.config中设定·customHeaders 错误变化为 原因‘ post方法使用前会有一次OPTION方法的请求’ 解决: ...
- SpringBoot添加支持CORS跨域访问
原文:https://www.jianshu.com/p/c6ea21b64f6e CORS(Cross-Origin Resource Sharing)"跨域资源共享",是一个W ...
随机推荐
- CAD二次开发
用C#有一段时间了,由于单位需要,开始接触CAD二次开发,网上一搜,加入CAD开发的群,零零碎碎看了一些文章和博客,没有系统地的知识,能解决一些小问题.最近开始系统学习,再次推荐两本书,一本事纸质版的 ...
- SAP项目管理模块培训教材
SAP项目管理模块培训教材(PLM210.PLM220.PLM230)分享: http://sap.npbok.com/
- ARC模式下的内存泄露问题
ARC模式下的内存泄露问题 iOS提供的ARC 功能很大程度上简化了编程,让内存管理变得越来越简单,但是ARC并不是说不会发生内存泄露,使用不当照样会发生. 以下列举两种内存泄露情况: 死循环造成的内 ...
- 如何防止JAVA反射对单例类的攻击?
在我的上篇随笔中,我们知道了创建单例类有以下几种方式: (1).饿汉式; (2).懒汉式(.加同步锁的懒汉式.加双重校验锁的懒汉式.防止指令重排优化的懒汉式); (3).登记式单例模式; (4).静态 ...
- 简单的css js控制table隔行变色
(1)用expression 鼠标滑过变色: <style type="text/css"><!-- table { background-color:#0000 ...
- member template
1.当且仅当类模板的参数相同时,你才能对类实体对象相互赋值,即将一个实体对象整体赋值给另外一个实体对象.不能将一种类型的实体对象赋值给另外一种实体对象.如: Stack<int> intS ...
- 比较C++和C#的一个性能问题
C++:只要你的代码正确,算法良好,你比较少关注性能问题,编译器会替你搞定绝大部分工作 C#:你的代码正确,算法良好,你还得用工具去分析优化性能,JIT为了快速工作,很多优化工作没有深入开展. 手工优 ...
- JS动态级联菜单
JS动态级联菜单是前端常用的一个功能,特此抽时间研究了下,附上代码 <html> <head> <meta charset="utf-8" /> ...
- 圆角卖萌式登录表单和width的百分比值
1.圆角恶意卖萌登录表单 小组要做一个网站,大学生社区那种,然后要做登陆界面然后还要做好看的登录界面,然后在书上看到了一个很漂亮的登陆界面,说来和一般的登陆界面没什么不同只是登录表单的边角被柔化了,变 ...
- 博客迁移至CSDN
本人的技术博客已经迁移至CSDN,地址为http://blog.csdn.net/starrow,现为Lotus Domino开发领域最活跃丰富的博客,内容包括Lotus Domino, JavaSc ...