从Web API控制器重定向到子域 - 需要CORS吗?

时间:2013-12-17 15:15:38

标签: c# asp.net-web-api cors http-redirect

目前,我的WebAPI控制器执行此操作:

var newUrl = _adminService.Foo(bar);
return Request.CreateResponse(HttpStatusCode.OK, newUrl);

因此客户端收到一个字符串,然后使用javascript设置window.location

这似乎是一种通过WebAPI重定向的hacky方式。我找到了这篇文章:

Redirect from asp.net web api post action

我已实施:

var newUrl = _adminService.Foo(bar);
var response = Request.CreateResponse(HttpStatusCode.Moved);
response.Headers.Location = new Uri(newUrl);
return response;

但是现在我在chrome中遇到以下错误(从localhost导航到子域时):

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

我需要为此配置CORS吗?

2 个答案:

答案 0 :(得分:3)

  

我是否需要为此配置CORS?

是的,如果您的javascript托管在与Web API不同的域上,您确实需要。

答案 1 :(得分:2)

是的,您必须使用CORS,但并非所有浏览器都支持它。

here有一个兼容性表格和here IE 8/9的一些限制,限制和解决方法