WebApi跨域问题解决
因为第一次用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跨域问题解决的更多相关文章
- C#进阶系列——WebApi 跨域问题解决方案:CORS
前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列— ...
- WebApi 跨域问题解决方案:CORS
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看W ...
- C#进阶系列——WebApi 跨域问题解决方案:CORS(转载)
C#进阶系列——WebApi 跨域问题解决方案:CORS 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2.场景测试 四.总结 正文 前言:上篇总结了下W ...
- (转)C# WebApi 跨域问题解决方案:CORS
原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2. ...
- django 前端请求跨域问题解决
django 前端请求跨域问题解决 笔者之前在做django-restful-api开发的时候,在前端请求页面发送请求的时候直接出现301,域名重定向的问题,经过一番查阅资料,终于得到了非常完美的解决 ...
- Vue项目在开发环境跨域和生成环境部署跨域问题解决
一.在dev环境下的跨域问题解决1.项目使用的是axios请求网络,将baseUrl修改为/api (这里是使用webpack提供的代理功能将/api代理成目标接口host) axios.defaul ...
- asp.net—WebApi跨域
一.什么是跨域? 定义:是指浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制. 同源策略限制了以下行为: 1.Cookie.LocalStora ...
- 关于WebAPI跨域踩到的一点坑
最近在尝试前后端分离的WebAPI+AngularJS方案,在率先处理授权的时候,踩到了一点WebAPI跨域的坑,其实严格意义上来说也不算是坑吧,只是我自己对WebAPI不熟悉而已,这里我与大家分享一 ...
- WebAPI跨域处理
原文来自:http://www.cnblogs.com/heifengwll/p/6243374.html WebApi2跨域问题 一.跨域问题产生的原因:同源策略(Same origin pol ...
随机推荐
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
消息队列函数由msgget.msgctl.msgsnd.msgrcv四个函数组成.下面的表格列出了这四个函数的函数原型及其具体说明. 1. msgget函数原型 msgget(得到消息队列标识符或 ...
- Docker构建ssh镜像
FROM ubuntu MAINTAINER ggzone xxx@live.com ENV REFRESHED_AT 2015-10-21 RUN apt-get -qqy update & ...
- Nginx启动提示找不到libpcre.so.1解决方法
如果是32位系统 [root@lee ~]# ln -s /usr/local/lib/libpcre.so.1 /lib 如果是64位系统 [root@lee ~]# ln -s /usr/lo ...
- oracle 11g 导出空表
正常情况下,oracle11g的 exp命令无法导出空表,弥补这个缺陷的方法是 在空表创建之前,更改系统设置: show parameter deferred_segment_creation 查看, ...
- 初学Python--列表(List)
1.索引 列表中的元素类型未必统一,如: listExample=[1,2,'a','b'] 元素下标索引以0开始 firstEle=listExample[0] 不能进行越界索引,但可以倒序索引 l ...
- ubuntu 12.04的源更新
apt-get install vim 安装vim vim /etc/apt/sources.list deb http://mirrors.163.com/ubuntu/ precise main ...
- Hadoop IO 特性详解(1)
本文结合hadoop : the definitive guide精心而作,包含作者的心血,希望可以帮助大家理解一点hdfs的皮毛,足矣.(charles@xingbod.cn) hadoop本身自带 ...
- jquery-attr与prop
问题:经常使用jQuery插件的attr方法获取checked属性值,获取的值的大小为未定义,此时可以用prop方法获取其真实值,下面介绍这两种方法的区别: 1.通过prop方法获取checked属性 ...
- 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 2——逻辑回归
作业说明 Exercise 2,Week 3,使用Octave实现逻辑回归模型.数据集 ex2data1.txt ,ex2data2.txt 实现 Sigmoid .代价函数计算Computing ...
- 不要向没权力&能力的人证明自己的能力
[不要向没权力&能力的人证明自己的能力] 不是所有的上级都有足够的权力和能力.一个没权力的Leader,即使你向他证明了自己的能力,你所能获得的也只能是他的邮件表扬的荣誉.对于加薪,他能给的仅 ...