CORS 和新的 ASPNET5

Posted

技术标签:

【中文标题】CORS 和新的 ASPNET5【英文标题】:CORS and the new ASPNET5 【发布时间】:2015-07-29 01:07:10 【问题描述】:

我正在尝试使用工厂内的 $http 模块向我的 aspnet Web Api 发出请求,例如:

http.get('http://localhost:5000/api/todo').success(function(r) return r; ).error(function(err) return err; );

但我收到以下错误:

XMLHttpRequest cannot load http://localhost:5000/api/todo. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin http://localhost:9000/ is therefore not allowed access.

我知道请求已到达服务器,因为我在请求资源时记录了一条消息。

我发现我必须在服务器上实现 CORS。我添加了 CORS 中间件并配置了我的启动文件,但没有任何改变。

我认为中间件应该将配置的标头添加到响应中,但它没有。

¿在这种情况下有什么问题?

【问题讨论】:

把UseCors移到UseMvc上面,中间件的顺序很重要。 如果你想更精细地控制哪些路由启用了 cors,你也可以在 MVC 中使用 cors 过滤器。 还要确保 asp.net 正在处理 OPTION 请求而不是 iis。 【参考方案1】:

好的,经过小研究。我发现 .WithOrigins("...") 方法没有添加 Access-Control-Allow-Origin 标头,我不知道是上下文还是什么,我刚刚为此做了一个issue。我现在用 .AllowAnyOrigin() 替换它。

并且还为我的控制器类添加了一个属性。 [EnableCorsAttribute("AllowAll")]

当然你需要在 EnableCorsAttribute 类所在的地方添加命名空间。 using Microsoft.AspNet.Cors.Core;

这对我有用,希望对您有所帮助,感谢 cmets。

【讨论】:

以上是关于CORS 和新的 ASPNET5的主要内容,如果未能解决你的问题,请参考以下文章

下载所有可用的(和新的)文件

Google Play 游戏、Firebase 和新的 Google 登录

终总结,新的里程和新的开始

Kotlin 和新的 ActivityTestRule :@Rule 必须是公开的

UINavigationBar 和新的 iOS 5+ 外观 API - 如何提供两个背景图像?

Fragment的Adapter和新的Fragment如何建立通信?