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     }

参考  http://www.cnblogs.com/moretry/p/4154479.html

    http://www.cnblogs.com/landeanfen/p/5177176.html#_labelTop

时间: 2024-10-24 06:45:12

C# webapi跨域的相关文章

C#进阶系列——WebApi 跨域问题解决方案:CORS

from:http://www.cnblogs.com/landeanfen/p/5177176.html 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2.场景测试 四.总结 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列--WebApi接口测试工具:WebApiTestClient C#进阶系列

WebApi 跨域问题解决方案:CORS

注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. 一.跨域问题的由来 同源策略:出于安全考虑,浏览器会限制脚本中发起的跨站请求,浏览器要求JavaScript或Cookie只能访问同域下的内容. 正是由于这个原因,我们不同项目之间的调用就会被浏览器阻止.

关于WebAPI跨域踩到的一点坑

最近在尝试前后端分离的WebAPI+AngularJS方案,在率先处理授权的时候,踩到了一点WebAPI跨域的坑,其实严格意义上来说也不算是坑吧,只是我自己对WebAPI不熟悉而已,这里我与大家分享一下. 先说一下我这边遇到的情况: 我是在做登录功能,使用的是微软的OWin提供的组件来实现 对于WebAPI跨域,你如果去百度或者谷歌,基本上会有以下两种答案: 一.在Web.config增加配置 在Web.config中system.webServer节点下面,增加配置项,设置输出的http he

WebAPI跨域处理

WebApi2跨域问题 一.跨域问题产生的原因:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能. 现在所有支持JavaScript 的浏览器都会使用这个策略. 所谓同源是指,域名,协议,端口相同. 当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面 当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的, 即检查是否同源,只有和百度同源的脚本才会被执行. 由于同源策略的限制,JavaScript就产生了跨域的问题. 参考:同源

WebApi跨域请求

在实际开发中 会有提供webapi给前端js 直接调用的情况, 这时候就会有存在跨域的情况, 解决方案: 在Global中添加代码 protected void Application_BeginRequest(object sender, EventArgs e) { HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); if (HttpContext.Current

CORS解决WebApi跨域问题(转)

CORS全称Cross-Origin Resource Sharing,中文全称跨域资源共享.它解决跨域问题的原理是通过向http的请求报文和响应报文里面加入相应的标识告诉浏览器它能访问哪些域名的请求 在WebApiCORS项目上面使用Nuget搜索"microsoft.aspnet.webapi.cors" 然后在App_Start文件夹下面的WebApiConfig.cs文件夹配置跨域 public static class WebApiConfig { public static

WebApi跨域方案(转)

一.跨域问题的由来 同源策略:出于安全考虑,浏览器会限制脚本中发起的跨站请求,浏览器要求JavaScript或Cookie只能访问同域下的内容.   正是由于这个原因,我们不同项目之间的调用就会被浏览器阻止.比如我们最常见的场景:WebApi作为数据服务层,它是一个单独的项目,我们的MVC项目作为Web的显示层,这个时候我们的MVC里面就需要调用WebApi里面的接口取数据展现在页面上.因为我们的WebApi和MVC是两个不同的项目,所以运行起来之后就存在上面说的跨域的问题. 二.跨域问题解决原

WebApi跨域问题

<!--最近在WebApi对外提供的服务里面,子系统请求时,遇到了跨域问题.现在解决方案是在webapi里的web.config找到上述代码地方,添加下面的代码即可 --><system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET" />

Asp.Net实现WebApi跨域 (非MVC)

目前WebApi在使用上大部分都是跟MVC组合的,而且使用起来也确实十分便利. 但有时候我们也需要在WebForm中使用WebApi,二者还是有一定区别的. 首先看下结构  ①ApiController 即Controller部分,当然也包含Api的路径也是很重要的.这里面是Api/{function}/{controller}/{action} 看一下Controller里面的内容 using System; using System.Web.Http; namespace WebApiTes