因为第一次用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. FPGA应用及ARM-FPGA架构举例

    FPGA的应用非常广泛,通信领域,视频图像处理领域,汽车电子领域,消费电子领域,工业领域,数据处理领域等,都能看到FPGA的身影. 在设计中,FPGA通常和其他处理IC架构,完成整个设计.FPGA-A ...

  2. json and pickle 序列化和反序列化

    类似vmware虚拟机里的虚拟主机挂起操作,把当前内存拷贝成文件保存. 上面的这种操作就叫内存序列化:如下图: 有序列化就有反序列化,要把文件里的东西再恢复成字典:eval把字符串变成字典. 但是上面 ...

  3. PHP面向对象深入研究之【命名空间】与【自动加载类】

    命名空间 避免类名重复,而产生错误. <?php require_once "useful/Outputter.php"; class Outputter { // outp ...

  4. python开发函数进阶:内置函数

    一,内置函数 #内置的模块#拿过来直接就用的:内置的函数 #!/usr/bin/env python #_*_coding:utf-8_*_ #内置的模块 #拿过来直接就用的:内置的函数 #作用域相关 ...

  5. 基于LVS的负载均衡实现

    一 什么是负载均衡 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ...

  6. windows右键打开方式里面添加新的应用程序

    1.打开注册表编辑器.打开运行窗口,快捷键,开始+R.输入“regedit”,回车确定. 2.进入注册表编辑器的HKEY_CLASSES_ROOT文件夹下的*子文件夹下的shell文件夹. 3.右键s ...

  7. infos

    C++文件流 iostream 提供了cin cout 分别用于从标准输入读取流和向标准输出写入流cout 标准输出 屏幕 输出写入fstream文件流 cin 从标准输入读取cout 向标准输入写入 ...

  8. Sql Server 2005如何导入DBF文件?

    提问者采纳   select * into 要生成的SQL表名 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DA ...

  9. leetcode811

    class Solution { public: void SplitString(const string& s, vector<string>& v, const st ...

  10. flask+jsonp跨域前后台交互(接口初体验)

    1 # -*- coding: utf-8 -*- 2 from flask import Flask, jsonify 3 import psutil, time,json 4 5 app = Fl ...