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 必须是公开的