javascript - WebApi 重定向到外部站点

标签 javascript c# angularjs asp.net-web-api

我有一个 WebApi Controller ,在调用它后我希望它将我重定向到另一个站点

这是我的 C# 代码

public async Task<HttpResponseMessage> Login(LoginParameters parameters, [FromUri]string returnUrl)
{
    //same validations
    var response = Request.CreateResponse(HttpStatusCode.Moved);

    response.Headers.Location = new Uri("Http://www.google.com");

    return response;
}

我的 JavaScript 代码是这样的

'user strict'
var login = function ($scope, $http) {

    var parameters = {
        userName: userName,
        password: password
    };

    var url = '/api/user/Login';

    $http.post(url, parameters);
        .then(function(response){
            /*some random code that i will remove */
        });
};

login.$inject = ['$scope', '$http'];
module.exports = login;

查看 chrome 控制台,我意识到 http POST 调用返回 httpstatus = 302。然后我看到另外 2 个请求到 google.com,但我的页面未重定向。那么我做错了什么?

提前致谢

最佳答案

当您使用$http时,它使用一个XMLHttpRequest对象,该对象不会调整用户的位置。它甚至会遵循重定向。您有几个选择:

  • 您可以将新位置作为字段返回,然后在 .then 回调中分配 window.location 以引发重定向。

  • 您可以使用标准表单发布到资源,然后浏览器将适本地遵循重定向。

关于javascript - WebApi 重定向到外部站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858490/

相关文章:

javascript - 减慢一些 Javascript

JavaScript递归函数控制台记录正确答案但返回未定义

c# - 使用多线程 for 循环

javascript - Angular 误差我不明白?

javascript - 避免展示新模型本身

javascript - Webpack - 如何 bundle/要求文件夹(子文件夹)的所有文件

c# - 在 C# 中处理资源

c# - 使用 C# 进行输入验证和异常

javascript - Angular Bootstrap ui 使轮播垂直滑动

angularjs - 如何 'unselect' 选定的文件?