redirect到外部url

我正在用NodeJs使用AngularJs。

我有一个场景,当一个成功的HTTP POST请求,我需要redirect用户。

在客户端通过AngularJS,我做了一个HTTP POST请求到一个路由:

$http.post('/aPath', data) .success(function (result) { //Handle success }) .error(function (err) { //Handle error }); 

这个路由在NodeJs内处理,然后执行实际的POST。 成功后,在路由处理程序中,我redirect:

 function handlePostRequest (req, res) { //Route handler //HTTP POST Request //Following code called when POST request is successful if (result) { //Successful post res.redirect("http://www.google.com"); } } 

但是,浏览器不会导航到谷歌。 相反,在AngularJS客户端的POST请求的error handling程序中,达到了控制。

我检查了服务器,发现POST请求作为状态码302返回,因此被客户端的POST请求的error handling程序挑选出来。

我不明白为什么,当服务器成功执行redirect代码时,控制仍然到达客户端,也是error handling程序。 我如何成功redirect?

它是一个angular度或XHR的HTTP POST? 如果是XHR,则无法将客户端从服务器端redirect,则需要发回一个错误,然后在客户端脚本中处理这些错误,例如:

 $http({ method: 'POST', url: 'yoururl', }).success(function(data, status, headers, config) { // success stuff }).error(function(data, status, headers, config) { if (status == 302) { window.location = headers('Location'); } }) 

成功的XHR返回的状态是200.您的服务器返回一个302在技术上是正确的,但这不是Angular所期望的$ http。 如果你的服务器可以给你一个200,那么你可以在$ http请求的.success函数中进行redirect。