【发布时间】:2013-09-08 07:17:33
【问题描述】:
我有客户端和服务器在不同的端口上运行。服务器正在运行 Web API 2 (v5.0.0-rc1)。
我尝试安装Microsoft ASP.NET Web API Cross-Origin Support package 并在WebApiConfig.cs 中启用它。它给了我EnableCors() 函数,所以包安装正确。
在这里你可以在WebApiConfig.cs中看到我的Register()函数:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
}
GET 请求工作正常。但是在发送POST 时,我得到以下信息:
OPTIONS http://localhost:19357/api/v1/rooms? 404 (Not Found) angular.js:10159
OPTIONS http://localhost:19357/api/v1/rooms? Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin. angular.js:10159
XMLHttpRequest cannot load http://localhost:19357/api/v1/rooms. Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.
根据 Fiddler 的说法,它只发送 OPTIONS 请求。之后它不会发出POST。
所以我猜WebApiConfig.cs 中的config.EnableCors(cors); 没有做任何事情,这导致服务器拒绝客户端/浏览器发送POST 请求。
你知道如何解决这个问题吗?
编辑 05.09.13 这已在 5.0.0-rtm-130905 中修复
【问题讨论】:
-
感谢您的问答,它已在 5.0.0-rtm 中修复。我在哪里可以获得 RTM 版本?
-
Tools -> Library Package Manager -> Package Manager Settings并在Package Sources下添加以下网址:myget.org/F/aspnetwebstacknightly
标签: c# asp.net-web-api cors