码迷,mamicode.com
首页 > Windows程序 > 详细

WebAPI 跨域

时间:2020-01-10 14:13:38      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:anon   span   方法   LLC   直接   数据   htm   bsp   dac   

第一种在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

         https://www.cnblogs.com/tpfOfBlog/p/6709260.html

WebAPI 跨域

标签:anon   span   方法   LLC   直接   数据   htm   bsp   dac   

原文地址:https://www.cnblogs.com/X-Jonney/p/12175824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!