我的项目是vue + ASP.NET 。在 Vue调试时,由于vue开启的调试用的服务器端口号 和 后台.NET程序的端口号是不同的,发送Ajax请求时,就会报错。这里就不提报错的原因了,网上有很多,基本的解决方法就是为对应的Action添加Header,比如以下代码:

        public ActionResult MeetingList() {

            Response.AppendHeader("Access-Control-Allow-Origin", "*");
Response.Headers.Add("Access-Control-Allow-Headers", "x-requested-with,content-type"); if (Request.HttpMethod.Equals("Options", StringComparison.OrdinalIgnoreCase))
{
return new EmptyResult();
} var meetingList = _meetingRepository.GetMeetings(); var MeetingDtoList = Mapper.Map<List<MeetingSelectDto>>(meetingList); return Json(MeetingDtoList, JsonRequestBehavior.AllowGet);
}

原理虽然如此,但是要为每一个Action都添加这样的代码,太不友好了。

这时可以使用Owin 的管道提前处理每一个请求,关于Owin,又是一个大话题,请自行google。

这里给一个自己写Owin中间件的教程链接 http://www.cnblogs.com/gaobing/p/5076089.html

我根据上面的链接,写的代码如下:

namespace WebApplication1.Middleware
{
public class CORSMiddleware : OwinMiddleware
{
public CORSMiddleware(OwinMiddleware next) : base(next) { } public override Task Invoke(IOwinContext context)
{ context.Response.Headers.Add("Access-Control-Allow-Origin",new string[] { "*" }); context.Response.Headers.Add("Access-Control-Allow-Headers", new string[] { "x-requested-with,content-type" }); if (context.Request.Method.Equals("Options", StringComparison.OrdinalIgnoreCase))
{
return Task.FromResult<int>();
}
return Next.Invoke(context);
}
}
}
namespace WebApplication1.Middleware
{
public static class AppBuilderExtension
{
public static IAppBuilder UseCORS(this IAppBuilder builder)
{
return builder.Use<CORSMiddleware>(); } }
}

之后在Startup里调用 UseCORS函数就可以了!

利用Owin解决CORS报错问题的更多相关文章

  1. Idea使用记录--添加Problems&&解决Autowired报错could not autowire

    今天在使用Idea的时候,发现Idea在整个每次找到错误代码非常不方便(Idea如果类中有错误,没有打开过类并不会提示,比如构建工程后缺少jar包问题).我想快速看到工程哪里出问题类似于eclipse ...

  2. [转]解决Maven报错"Plugin execution not covered by lifecycle configuration"

    [转]解决Maven报错"Plugin execution not covered by lifecycle configuration" 导入Myabtis源码后,POM文件会报 ...

  3. 解决MySQL报错ERROR 2002 (HY000)【转】

    今天在为新的业务线搭架数据库后,在启动的时候报错 root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql ERROR 2002 (HY000): C ...

  4. vue解决启动报错cjs loader.js Error: Cannot find module '../config'问题

    vue解决启动报错cjs loader.js Error: Cannot find module '../config'问题 今天下载了一个开源项目一直运行不了,折腾了半天才找到问题所在,config ...

  5. 解决 php 报错 open_basedir restriction in effect或者nginx提示No input file specified怎么办

    解决 php 报错 open_basedir restriction in effect或者nginx提示No input file specified怎么办 问题是出现在了PHP.INI上面了 ,原 ...

  6. 解决MySQL报错:1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'informat

    解决MySQL报错:1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'informat ...

  7. eclips中maven解决jsp报错的问题

    加入如下的pom依赖: <!-- 解决jsp报错的依赖包第一个 --> <dependency> <groupId>javax.servlet</groupI ...

  8. 不修改系统日期和时间格式,解决Delphi报错提示 '****-**-**'is not a valid date and time

    假如操作系统的日期格式不是yyyy-MM-dd格式,而是用strtodate('2014-10-01')) 来转换的话,程序会提示爆粗 '****-**-**'is not a valid date ...

  9. Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).

    Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). Git fet ...

随机推荐

  1. 【zabbix教程系列】七、自动注册(Windows)

    零.页面操作,设置自动注册Windows 配置--->动作--->事件源选为自动注册---->创建动作 填写名称,配置触发条件 主机元数据   值为 Windows 操作 一.Win ...

  2. Flex弹性布局以及box-sizing

    (本篇内容代表本人理解,如有错误请指出!) box-sizing box-sizing 属性用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型.可以使用此属性来模拟不正确支持CSS盒子模型规范的 ...

  3. vue组件之间的通信

    1.父组件给子组件传递数据 <body> <div id="app"> 父组件:{{total}} <br> <son-component ...

  4. js 实现数据结构 -- 字典

    原文: 在Javascript 中学习数据结构与算法. 概念: 集合.字典.散列表都可以存储不重复的数据.字典和我们上面实现的集合很像. 当然,字典中的数据具有不重复的特性.js 中 Object 的 ...

  5. Django内置分页

    一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...

  6. loj121-动态图连通性

    Solution 线段树分治, 然后直接在线段树上dfs, 在进入/回溯的过程中维护并查集的merge/split. 对于split操作, 可以在merge时按秩合并, 然后利用栈记录, split时 ...

  7. java回调函数,看完就懂

    java回调函数在网上了看了些例子,比较绕,不够清晰,自己写的一个例子比较通俗,java回调其实很简单. 举个例子我是类B,我有个方法叫b(),现在我要调用类A中的方法a(),写个代码就是: publ ...

  8. ADO.Net笔记整理(一)

    几次装机,Notes已烟消云散,近日因为Node.js死活搞不定,无奈装机,备份好的东东,没想到磁盘扇区出现异常,可能是PE启动盘的病毒,只好将磁盘全部重新分区,恢复数据也懒得恢复了,日积月累关乎将来 ...

  9. java文件运行的过程

    javac .java——>编译成.class文件(字节码) 参考: https://www.cnblogs.com/yxwkf/p/3855363.html https://www.jians ...

  10. Logback日志基础配置以及自定义配置

    Logback日志基础配置 logback日志配置有很多介绍,但是有几个非常基础的,容易忽略的.下面是最简单的一个配置,注意加粗的描述 <?xml version="1.0" ...