当前位置: 首页 > news >正文

Asp.Net WebApi服务端解决跨域方案

1.特性方式

 主要是继承ActionFilterAttribute,重写OnActionExecuted方法,在action执行后,给响应头加上一个键值对。

 1 using System.Web.Http.Filters;
 2 public class OriginAttribute:ActionFilterAttribute
 3     {
 4         private const string Origin = "Origin";
 5         private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
 6         private const string OriginHeaderdefault = "*";
 7         public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
 8         {
 9             actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, OriginHeaderdefault);
10         }
11     }

这里说下ActionFilterAttribute吧,其实转到定义就很明了的看到了,熟悉ASP.NET MVC的一眼看到的会感觉这不是和MVC中的一样么,其实只是函数个数一样,在MVC中定义的函数分别是OnActionExecuting、OnActionExecuted、OnResultExecuting、OnResultExecuted区别就在这两个

webapi:

MVC:

用法没啥特殊,可以加在Controller上,也可以加载Action上

1        [Origin]
2         public HttpResponseMessage GetProductsALL()
3         {
4             HttpResponseMessage rs = new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(products), System.Text.Encoding.UTF8, "application/json")};
5             return rs;
6         }

2.freamwork(V4.5+)自带的 System.Web.Http.Cors

先在Global.asax.cs文件中配置GlobalConfiguration,然后像加特性一样加载Controller或者Action上

1  public class WebApiApplication : System.Web.HttpApplication
2     {
3         protected void Application_Start()
4         {
5             GlobalConfiguration.Configuration.EnableCors();
6             GlobalConfiguration.Configure(WebApiConfig.Register);
7         }
8     }
1         [EnableCors(origins:"*",headers:"*",methods:"*")]
2        // [Origin]
3         public HttpResponseMessage GetProductsALL()
4         {
5             HttpResponseMessage rs = new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(products), System.Text.Encoding.UTF8, "application/json")};
6             return rs;
7         }

  orgins:Comma-separated list of origins that are allowed to access the resource. Use "*" to allow all

      允许访问资源的逗号分隔的源列表。 使用“*”允许所有

  headers

  methods:

      Comma-separated list of headers that are supported by the resource. Use "*" to allow all. Use null or empty string to allow none

      以逗号分隔的资源支持的标题列表。 使用“*”允许所有。 使用null或空字符串不允许

System.Web.Http.Cors介绍的只是冰山一角,系列文章可以访问 http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-05.html

  

 

转载于:https://www.cnblogs.com/lb12081116/p/6424871.html

相关文章:

  • 029——VUE中键盘语义修饰符
  • Google 是如何开发 Web 框架的
  • 46.2. HTML 处理
  • delphi2010 开发及调试WebService 实例
  • pyhon3.0 day01 变量、输入、输出、循环
  • 【BZOJ3675】【APIO2014】序列分割 [斜率优化DP]
  • 使用redux开发的简单步骤
  • Oracle索引聚簇因子的含义及重要性
  • 处理Matlab 警告: MATLAB 已通过改用 OpenGL 软件禁用了某些 高级的图形渲染
  • Centos iptables常用命令及设置
  • kafka-java客户端连接
  • mysql学习笔记(四)--- 聚合函数、控制流程函数
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • 让mysql查询强制走索引
  • Unity几个有用的游戏运动特效
  • 08.Android之View事件问题
  • Angular 2 DI - IoC DI - 1
  • java2019面试题北京
  • Java应用性能调优
  • JS基础之数据类型、对象、原型、原型链、继承
  • JS数组方法汇总
  • Linux CTF 逆向入门
  • MySQL QA
  • OSS Web直传 (文件图片)
  • 仿天猫超市收藏抛物线动画工具库
  • 人脸识别最新开发经验demo
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 推荐一个React的管理后台框架
  • 由插件封装引出的一丢丢思考
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 你对linux中grep命令知道多少?
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • #etcd#安装时出错
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (6)添加vue-cookie
  • (C语言)球球大作战
  • (二)springcloud实战之config配置中心
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)shell调试方法
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net中ListT 泛型转成DataTable、DataSet
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [<死锁专题>]
  • [Android]Tool-Systrace
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体