因为第一次用webapi,并且还是前后台分离,所以设置到了跨域,在百度上找了很多解决办法,但是基本都存在缺陷,我这里分享一下我自己的经验

1.首先配置Web.config

这样配置发布到服务器就可以跨域了,当然还有很多方法,例如在NuGet下载cors的安装包,但是网站的这个教程在我这里并不适用,首先这么包需要.net4.5以上的版本的支持,但是我项目是4.5的版本,下载了这个包后IDocumentationProvider这个接口类多了两个

接口需要实现,不是的是不是我用VS2012版本低的缘故,就是自己实现了这两个接口代码不报错了,但是在运行代码的时候GlobalConfiguration这个类初始化失败,如果有人知道这个原因希望可以跟我留言解析一下这是怎么造成的,小弟在此万分感谢。

以下是我在跨域ajax请求的时候遇到坑,因为我是自动生成的webapi demo所有用ajax的get请求一直失败400错误 ,因为这两个Get方法不支持重载

上面这个虽然可有实现跨域功能,但是有一个小缺陷,就是做webapi身份验证的时候会出现请求不通过的情况,身份验证的时候通常的要在ajax的请求头里加上token身份验证票据,这个时候浏览器就会先发起一个options请求,而你的路由拦截这个请求

就会报错,所以下面有另外一种跨域方法可以解决该问题,也是我比较推荐的一种方法,如下图

首先第一步在NuGet里面安装Microsoft.ASP.NET Web API2.2 Cross-Origin Support这个包

安装了之后也许你的项目会报错,就是你的区域下面有个IDocumentationProvider接口类多了两个接口,这个时候你就手动实现一下,具体为什么引用了那两个包会多这两个接口原因尚且不明,手动实现如下

到了这一步你也许又会遇到坑,就是在你运行项目的时候你会发现下面这个错

是不是特别的头疼,各种坑爹啊有木有,有可能是我自己项目版本太低的缘故,你们要是没有这个错误最好,经过研究发现然后是我的一个System.Web.Http.WebHost.dll的版本太低,

我的是v4.0.0.0,要解决这个错误你就必须升级到System.Web.Http.WebHost.dll, v5.2.3.0以上的版本,反正这个版本好使,其他的版本我没试过,那么怎么升级这个东西呢,如下图

如果你的管理NuGet程序包没有BuGet官方程序源就到设置里面添加一下

是不是很麻烦,反正就这样经过千辛万苦搞定了,然后下面配置这个路由就行了

WebApi跨域问题解决的更多相关文章

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

    前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列— ...

  2. WebApi 跨域问题解决方案:CORS

    注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看W ...

  3. C#进阶系列——WebApi 跨域问题解决方案:CORS(转载)

    C#进阶系列——WebApi 跨域问题解决方案:CORS   阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2.场景测试 四.总结 正文 前言:上篇总结了下W ...

  4. (转)C# WebApi 跨域问题解决方案:CORS

    原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2. ...

  5. django 前端请求跨域问题解决

    django 前端请求跨域问题解决 笔者之前在做django-restful-api开发的时候,在前端请求页面发送请求的时候直接出现301,域名重定向的问题,经过一番查阅资料,终于得到了非常完美的解决 ...

  6. Vue项目在开发环境跨域和生成环境部署跨域问题解决

    一.在dev环境下的跨域问题解决1.项目使用的是axios请求网络,将baseUrl修改为/api (这里是使用webpack提供的代理功能将/api代理成目标接口host) axios.defaul ...

  7. asp.net—WebApi跨域

    一.什么是跨域? 定义:是指浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制. 同源策略限制了以下行为: 1.Cookie.LocalStora ...

  8. 关于WebAPI跨域踩到的一点坑

    最近在尝试前后端分离的WebAPI+AngularJS方案,在率先处理授权的时候,踩到了一点WebAPI跨域的坑,其实严格意义上来说也不算是坑吧,只是我自己对WebAPI不熟悉而已,这里我与大家分享一 ...

  9. WebAPI跨域处理

    原文来自:http://www.cnblogs.com/heifengwll/p/6243374.html WebApi2跨域问题   一.跨域问题产生的原因:同源策略(Same origin pol ...

随机推荐

  1. RecyclerView(滚动控件)的用法

    1.首先在build.gradle中添加依赖库 compile 'com.android.support:recyclerview-v7:24.2.1' 2.修改activity_main.xml & ...

  2. Intent使用方法

    显示Intent 通过构造函数的重载,创建Intent对象,并用startActivity()启动目标活动. 目标活动需要在AndroidManifest.xml中注册 ...... Intent i ...

  3. juc线程池原理(四): 线程池状态介绍

    <Thread之一:线程生命周期及五种状态> <juc线程池原理(四): 线程池状态介绍> 线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态.线程池也有5种状态 ...

  4. Docker - 避免启动container后运行shell脚本执行完成后docker退出container

    问题 最近在使用 Dockerfile 启动容器,发现使用Dockerfile调用容器里面的shell,当shell执行完成以后,docker会退出容器. 分析 Docker 在执行shell的时候, ...

  5. NSString 转换

    NSString *tempA = @"123"; NSString *tempB = @"456"; 1,字符串拼接 NSString *newString ...

  6. Linux - 锁定文件

    锁定关键的系统文件可以防止服务器提权后被篡改 对启动文件和账号密码文件进行加锁 [root@sch01ar ~]# chattr +i /etc/passwd /etc/shadow /etc/gro ...

  7. 科学家开发新AI系统,可读取大脑信息并表达复杂思想

    我们终于找到了一种方法,可以在核磁共振成像的信号中看到这种复杂的想法.美国卡内基梅隆大学的Marcel Just说,思维和大脑活动模式之间的对应关系告诉我们这些想法是如何构建的. 人工智能系统表明,大 ...

  8. kettle init

  9. flask系列一之环境搭建包安装

    一,python的安装 (1)python的安装 (2)虚拟环境的配置 参考:http://www.cnblogs.com/bfwbfw/p/7995245.html 1,虚拟环境的建立 (1)使用p ...

  10. Mycat之日志分析跨分片事务以及存储过程的执行过程

    1 针对成功事务: 过程说明: 1.初始化连接,路由到各个分片 2.开启非阻塞执行更新,然后执行时候每个节点执行2次 3.执行提交,各节点返回commit 4.释放连接,先释放datasource然后 ...