zoukankan      html  css  js  c++  java
  • (#转)C# webapi跨域

    原文链接:https://www.cnblogs.com/tpfOfBlog/p/6709260.html
     

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

  • 相关阅读:
    Activiti学习笔记1 — 下载与开发环境的配置
    JavaScript实现本地图片上传前进行裁剪预览
    我国县及县级以上城市编码
    一些小技巧
    NodeJS学习之异步编程
    NodeJS学习之网络操作
    NodeJS学习之文件操作
    Sass和Compass设计师指南
    Sass
    CKEditor配置及使用
  • 原文地址:https://www.cnblogs.com/wangdongying/p/10334575.html
Copyright © 2011-2022 走看看