C# webapi跨域
C# webapi跨域
第一种在Web.config中<system.webServer>节点中配置(不支持多个域名跨域)
1 <httpProtocol>
2 <customHeaders>
3 <add name="Access-Control-Allow-Origin" value="http://localhost:31551" />
4 <add name="Access-Control-Allow-Headers" value="*" />
5 <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
6 </customHeaders>
7 </httpProtocol>
第二种方式,在项目中用NuGet安装microsoft.aspnet.webapi.cors(支持多个域名跨域)
如果遇到 System.FieldAccessException: 方法“System.Web.Http.GlobalConfiguration..cctor()”尝试访问字段“System.Web.Http.GlobalConfiguration.CS$<>9__CachedAnonymousMethodDelegate2”失败。
这个问题,我这边 是因为 Microsoft.AspNet.WebApi 2 没有安装,安装之后就没问题了
1.然后在App_Start文件夹下面的WebApiConfig.cs文件夹配置跨域
2.也可以在配置文件中设置,然后读取配置文件
在appSettings节点中配置
1 <add key="cors_allowOrigins" value="http://localhost:31551,http://localhost:6449"/>
2 <add key="cors_allowHeaders" value="*"/>
3 <add key="cors_allowMethods" value="*"/>
然后在App_Start文件夹下面的WebApiConfig.cs文件夹配置跨域
1 public static void Register(HttpConfiguration config)
2 {
3 //跨域配置
4 //config.EnableCors(new System.Web.Http.Cors.EnableCorsAttribute("http://localhost:31551,http://localhost:6449", "*", "*"));
5
6 var allowOrigins = ConfigurationManager.AppSettings["cors_allowOrigins"];
7 var allowHeaders = ConfigurationManager.AppSettings["cors_allowHeaders"];
8 var allowMethods = ConfigurationManager.AppSettings["cors_allowMethods"];
9 var globalCors = new System.Web.Http.Cors.EnableCorsAttribute(allowOrigins, allowHeaders, allowMethods);
10 config.EnableCors(globalCors);
11
12 config.Routes.MapHttpRoute(
13 name: "DefaultApi",
14 routeTemplate: "api/{controller}/{action}/{id}",
15 defaults: new { id = RouteParameter.Optional }
16 );
17 }
3.如果你只想对某一些api做跨域,可以直接在API的类上面使用特性标注即可。
先在App_Start文件夹下面的WebApiConfig.cs启用Cors
然后在接口前面加上标注就行了
1 [System.Web.Http.Cors.EnableCors(origins: "http://localhost:31551", headers: "*", methods: "GET,POST,PUT,DELETE")]
2 public class ChargingController : ApiController
3 {
4 /// <summary>
5 /// 得到所有数据
6 /// </summary>
7 /// <returns>返回数据</returns>
8 [HttpGet]
9 public string GetAllChargingData()
10 {
11 return "Success";
12 }
13 }
C# webapi跨域的更多相关文章
- C#进阶系列——WebApi 跨域问题解决方案:CORS
前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列— ...
- WebApi 跨域问题解决方案:CORS
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看W ...
- C#进阶系列——WebApi 跨域问题解决方案:CORS(转载)
C#进阶系列——WebApi 跨域问题解决方案:CORS 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2.场景测试 四.总结 正文 前言:上篇总结了下W ...
- asp.net—WebApi跨域
一.什么是跨域? 定义:是指浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制. 同源策略限制了以下行为: 1.Cookie.LocalStora ...
- 关于WebAPI跨域踩到的一点坑
最近在尝试前后端分离的WebAPI+AngularJS方案,在率先处理授权的时候,踩到了一点WebAPI跨域的坑,其实严格意义上来说也不算是坑吧,只是我自己对WebAPI不熟悉而已,这里我与大家分享一 ...
- WebAPI跨域处理
原文来自:http://www.cnblogs.com/heifengwll/p/6243374.html WebApi2跨域问题 一.跨域问题产生的原因:同源策略(Same origin pol ...
- SNF快速开发平台MVC-EasyUI3.9之-WebApi跨域处理方案
在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案.由于时间有限,本文不会深入. 笔者遇到的问题是Js调用WebAPI中的数据进行跨域的场景.涉及若干跨域方案:目前采用we ...
- (转)C# WebApi 跨域问题解决方案:CORS
原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2. ...
- sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)
sql的行转列(PIVOT)与列转行(UNPIVOT) 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...
- 连表查询都用Left Join吧 以Windows服务方式运行.NET Core程序 HTTP和HTTPS的区别 ASP.NET SignalR介绍 asp.net—WebApi跨域 asp.net—自定义轻量级ORM C#之23中设计模式
连表查询都用Left Join吧 最近看同事的代码,SQL连表查询的时候很多时候用的是Inner Join,而我觉得对我们的业务而言,99.9%都应该使用Left Join(还有0.1%我不知道在 ...
随机推荐
- 【noi 2.6_9285】盒子与小球之三(DP)
题意:有N个相同的球,M个不同的盒子,每个盒子最多放K个球.请计算将这N个球全部放入盒子中的方案数模1000007后的结果. 解法:f[i][j]表示i个盒子里放j个球的方案数. 1.得到3重循环的坐 ...
- python连接mysql数据库,并进行添加、查找数据
1.删除MySQL数据表中的记录 DELETE FROM table_name WHERE condition; python操作mysql1数据库 import pymysql # 连接mysql数 ...
- 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) C.Coronavirus (BFS)
题意:有一个图,要求从\(S\)走到\(E\),\(.\)表示可以走的路径,\(*\)周围的八个方向均不能走,要求判断是否能走到\(E\),若能,输出最小路径长度,否则输出\(Impossible\) ...
- Linux系统编程【1】——编写more命令
背景介绍 笔者知识背景 笔者接触Linux快一年了.理论知识方面:学习了操作系统基础知识,了解进程调度.内存分配.文件管理.磁盘I/O这些基本的概念. 实操方面:会使用Linux简单命令,在嵌入式系统 ...
- 在异步或子线程中show窗体的时候要用MethodInvoker委托,要不然show不出来
this.Invoke((MethodInvoker)delegate () { Thread.Sleep(500); this.Hide(); FloatWnd floatWnd = new Flo ...
- Kubernets二进制安装(7)之部署主控节点服务--apiserver简介
API Server简介 Kubernetes API Server提供了K8S各类资源对象(如:pod.RC.Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和 ...
- 6.Header交换机之模拟验证用户身份
标题 : 6.Header交换机之模拟验证用户身份 目录 : RabbitMQ 序号 : 6 var channel = connection.CreateModel(); //设置服务质量 ch ...
- 抓包 127.0.0.1 (loopback) 使用 tcpdump+wireshark
直接使用 wireshark无法抓取 127.0.0.1环回的数据包,一种解决方法是先传到路由器再返回,但这样可能造成拥塞. Linux 先使用tcpdump抓包并输出为二进制文件,然后wiresha ...
- 宏&一个简单的宏病毒示例
基于VisualBasicForApplications 其一:录制宏 在word,视图,宏,录制宏选项. 操作比较简单,不再赘述. (注意根据需求选择normal还是当前文档) 例如:录制宏:快捷键 ...
- Leetcode(871)-最低加油次数
汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处. 沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 s ...