Redirect 如何在AngularJS中跟踪http.get中的重定向?

Redirect 如何在AngularJS中跟踪http.get中的重定向?,redirect,angularjs,http-get,Redirect,Angularjs,Http Get,我正在为教练建立一个网站,通过社交媒体帮助人们过上更健康的生活。目前,我正在使用前端为AngularJS的ExpressJS服务器通过OAuth访问Twitter 从: 介于200和299之间的响应状态代码被视为成功状态,并将导致调用成功回调。请注意,如果响应是重定向,XMLHttpRequest将透明地跟随它,这意味着不会为此类响应调用错误回调 我的服务器的完整代码可以在github中和github上找到,但这是调用者: 函数LoginCtrl($scope、$http、$location){

我正在为教练建立一个网站,通过社交媒体帮助人们过上更健康的生活。目前,我正在使用前端为AngularJS的ExpressJS服务器通过OAuth访问Twitter

从:

介于200和299之间的响应状态代码被视为成功状态,并将导致调用成功回调。请注意,如果响应是重定向,XMLHttpRequest将透明地跟随它,这意味着不会为此类响应调用错误回调

我的服务器的完整代码可以在github中和github上找到,但这是调用者:

函数LoginCtrl($scope、$http、$location){
$scope.welcome='使用Twitter登录';
$http.defaults.useXDomain=true;
$scope.submit=function(){
$http({method'GET',url:'/sessions/connect'})。
成功(功能(数据、状态){
$scope.welcome=数据;
});
};
}
这是web.js中的被调用方:

app.get('/sessions/connect',函数(req,res){
consumer().getOAuthRequestToken(函数(错误、oauthToken、oauthTokenSecret、结果){
如果(错误){
res.send(“获取OAuth请求令牌时出错:”+sys.inspect(Error),500);
}否则{
req.session.oauthRequestToken=oauthToken;
req.session.oauthRequestTokenSecret=oauthTokenSecret;
res.redirect(“https://api.twitter.com/oauth/authorize?oauth_token=“+req.session.oauthRequestToken);
}
});
});
如果我使用
tcpdump
(对不起,我是老式的)检查,我会看到:

连接:。保持活动状态….已移动。暂时..重定向到。https://api.twitter.com/oauth/authorize?oauth_token=***

当然,这真的很好,当我在浏览器中手动转到这个服务器
/sessions/connect
时,确实会发生这种情况。然而,使用AngularJS,我的浏览器屏幕实际上并没有重定向。为什么不呢?

$http
将为您获取页面内容。但是,它会在承诺中还给您结果。除非你要求,否则它根本不会改变你的页面。在
then
处理程序中,您可以做一些事情来重定向页面。这里有一个例子说明了如何做到这一点:

但是如果我使用
res.send(“重定向建议到https://”)
我会将自己重定向到twitter页面。从那里我的服务器上的一些东西将被调用(路由
/sessions/callback
),我将无法在AngularJS控制器中获得对该回调的响应对象,不是吗?在服务器上与AngularJS一起使用oauth可能不可能吗?@ondervloei Twitter在其网站上详细说明了oauth过程:您要将浏览器重定向到Twitter,Twitter将使用令牌重定向回您的服务器。然后,您可以将令牌从服务器传递回Angular。如果你想把你的页面放在那里,你可以打开一个新的窗口。我在C++之前已经实现了OAuthe。对不起,我对这里所要求的服务器端和客户端代码之间的交互没有太多经验。不过,我想我已经找到了总体方案,即通过使用AngularJS在客户端设置路由。这个谜题中有相当多的部分,如果提到这些网站,我就认为我没有访问它们。:-)@我明白了。您需要将浏览器重定向到Twitter,OAuth才能工作。否则,Twitter无法确保其用户的凭据受到保护。你可以用iframe。关键是要让Twitter拥有绝对控制权,这样他们才能授权用户。对不起,这是行不通的。Angular先获取重定向页面,然后才能向用户代理发出重定向。