Ann*_*sum 9 redirect http-get angularjs
我正在建立一个教练网站,通过使用社交媒体帮助人们过上更健康的生活.目前我正在使用前端AngularJS的ExpressJS服务器中的OAuth访问Twitter.
200到299之间的响应状态代码被视为成功状态,将导致调用成功回调.请注意,如果响应是重定向,则XMLHttpRequest将透明地跟随它,这意味着不会为此类响应调用错误回调.
我的服务器的完整代码可以在github上的web.js和twitter.js中找到,但这是调用者:
function LoginCtrl($scope, $http, $location) {
$scope.welcome = 'Sign in with Twitter';
$http.defaults.useXDomain = true;
$scope.submit = function() {
$http({method: 'GET', url: '/sessions/connect'}).
success(function(data, status) {
$scope.welcome = data;
});
};
}
Run Code Online (Sandbox Code Playgroud)
这是web.js中的被调用者:
app.get('/sessions/connect', function(req, res){
consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){
if (error) {
res.send("Error getting OAuth request token : " + sys.inspect(error), 500);
} else {
req.session.oauthRequestToken = oauthToken;
req.session.oauthRequestTokenSecret = oauthTokenSecret;
res.redirect("https://api.twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);
}
});
});
Run Code Online (Sandbox Code Playgroud)
如果我查一下tcpdump(对不起我是老式的),我看到:
Connection:.keep-alive....Moved.Temporarily..Redirecting.to.https://api.twitter.com/oauth/authorize?oauth_token=***
Run Code Online (Sandbox Code Playgroud)
这当然非常好,当我/sessions/connect在浏览器中手动访问此服务器时确实会发生这种情况.但是,使用AngularJS,我的浏览器屏幕实际上并未重定向.为什么不?
$http去找你的页面内容.但是,它会在承诺中为您提供结果.除非您要求,否则它根本不会更改您的页面.在您的then处理程序中,您可以执行一些操作来重定向页面.这里有一个如何做到这一点的例子:处理Angular POST的快速重定向
| 归档时间: |
|
| 查看次数: |
30647 次 |
| 最近记录: |