因为第一次用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. Git的其他一些使用案例

    按照格式输出提交号 作者 时间 git log --pretty=format:"%h %an %cd" --date=iso 获取所有远程的tag和他的commit sha1 g ...

  2. mongodb配置和基本操作

    MongoDB3.0新特性WiredTigerMMAPv1可插拔引擎API基于web的可视化管理工具 查看版本号mongod --version启动数据库 mongod --dbpath $dbpat ...

  3. 南阳OJ 61 传纸条(一)

    传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...

  4. java从键盘输入一组数据,输出其最大值,平均值,最小值没法输出

    总结::需要耐心,加思考.做事不思考,那就是白做徒劳!!!!! package com.aini; import java.util.Scanner; //操...为什么数组的大小比较我硬是搞不懂,比 ...

  5. 不同浏览器对于html5 audio标签和音频格式的兼容性

    音频格式 Chrome Firefox IE9 Opera Safari OGG 支持 支持 支持 支持 不支持 MP3 支持 不支持 支持 不支持 支持 WAV 不支持 支持 不支持 支持 不支持 ...

  6. Spring MVC的配置

    一.添加依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>sprin ...

  7. js控制图片放大缩小的简易版

    js代码: function bb_img_onmousewheel(e, o) { var zoom = parseInt(o.style.zoom, 10) || 100; zoom += eve ...

  8. FZU2282 Wand

    题意 n个数字,要求至少k个数字位置不变,其余进行错排的方案数 分析 错排公式: D(n)=(n-1)[D(n-2)+D(n-1)]  如果n个数字,i个数字位置不变,其余进行错排的的方案数是C(n, ...

  9. 刷题向》关于搜索+tarjan的奇怪组合题 BZOJ1194 (normal+)

    关于这道题,其实看懂了的话还是比较好写的,只是题目实在又臭又长,没有让人读下去的勇气. 给出题目翻译: 给你S张图, 每张图有M个点,其中M个点中有N个是特殊单位,会给出. 每个点又有0.1两条边指向 ...

  10. 【bzoj3942】[Usaco2015 Feb]Censoring

    [题目大意] 有一个S串和一个T串,长度均小于1,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程. [样例输入] whatth ...