Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从WebAPI控制器重定向到子域-需要CORS吗?_C#_Asp.net Web Api_Cors_Http Redirect - Fatal编程技术网

C# 从WebAPI控制器重定向到子域-需要CORS吗?

C# 从WebAPI控制器重定向到子域-需要CORS吗?,c#,asp.net-web-api,cors,http-redirect,C#,Asp.net Web Api,Cors,Http Redirect,目前,我的WebAPI控制器执行以下操作: var newUrl = _adminService.Foo(bar); return Request.CreateResponse(HttpStatusCode.OK, newUrl); 因此,客户端接收一个字符串,然后使用javascript设置window.location 这似乎是一种通过WebAPI重定向的黑客方式。我发现这个帖子: 我已经实施了: var newUrl = _adminService.Foo(bar); var respo

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

var newUrl = _adminService.Foo(bar);
return Request.CreateResponse(HttpStatusCode.OK, newUrl);
因此,客户端接收一个字符串,然后使用javascript设置window.location

这似乎是一种通过WebAPI重定向的黑客方式。我发现这个帖子:

我已经实施了:

var newUrl = _adminService.Foo(bar);
var response = Request.CreateResponse(HttpStatusCode.Moved);
response.Headers.Location = new Uri(newUrl);
return response;
但现在,当从localhost导航到子域时,我在chrome中遇到以下错误:

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吗

我需要为此配置CORS吗

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

我需要为此配置CORS吗


是的,如果您的javascript托管在与Web API不同的域上,您确实需要。是的,您必须使用CORS,但并非所有浏览器都支持它


IE 8/9有一个兼容性表和一些限制、限制和解决办法。是的,您必须使用CORS,但并非所有浏览器都支持它


IE 8/9有一个兼容性表和一些限制、限制和解决方法

为什么您希望服务WebApi强制客户端执行任何操作?@Maess用户通过WebApi发布,然后被重定向。与MVC控制器相同。为什么不使用MVC控制器?为什么您希望服务WebApi强制客户端执行任何操作?@Maess用户通过WebApi发布,然后被重定向。和MVC控制器一样。为什么不使用MVC控制器呢?我很困惑——我没有在新方法中使用javascript。我正在通过标题重定向。原来的方法是有效的,但是标题重定向不是。你没有使用javascript???那么XMLHttpRequest在错误消息中来自哪里?这是AJAX。我正在使用它,但当我返回重定向响应时,它不应该被击中,对吗?我以为浏览器一看到“301”就会推送到指定的URI。。。但是,由于重定向头,我的.fail回调似乎从源页面被命中。您在另一篇文章中的建议是否不适用于跨域重定向?为了能够甚至通过AJAX调用命中服务器,此远程服务器必须支持CORS。否则浏览器只会发出您看到的警告。你似乎已经转向了某些方面http://test.localhost:3806/ 但是,无论在这个地址听什么,都不支持CORShttp://localhost:3806. 如果您希望能够访问此http://test.localhost:3806/ 位于那里的脚本必须发送适当的CORS头。理解-感谢您的帮助-我已启用CORS,我不再收到上述错误。控制器返回内容设置为新页面子域的有效负载,但浏览器中的重定向从未发生。失败回调在源页面localhost上被点击。我很困惑——我没有在新方法中使用javascript。我正在通过标题重定向。原来的方法是有效的,但是标题重定向不是。你没有使用javascript???那么XMLHttpRequest在错误消息中来自哪里?这是AJAX。我正在使用它,但当我返回重定向响应时,它不应该被击中,对吗?我以为浏览器一看到“301”就会推送到指定的URI。。。但是,由于重定向头,我的.fail回调似乎从源页面被命中。您在另一篇文章中的建议是否不适用于跨域重定向?为了能够甚至通过AJAX调用命中服务器,此远程服务器必须支持CORS。否则浏览器只会发出您看到的警告。你似乎已经转向了某些方面http://test.localhost:3806/ 但是,无论在这个地址听什么,都不支持CORShttp://localhost:3806. 如果您希望能够访问此http://test.localhost:3806/ 位于那里的脚本必须发送适当的CORS头。理解-感谢您的帮助-我已启用CORS,我不再收到上述错误。控制器返回内容设置为新页面子域的有效负载,但浏览器中的重定向从未发生。而在源页面localhost上点击失败回调。