当前位置: 首页 > 面试题库 >

如何在AngularJS中的http.get中进行重定向?

左劲
2023-03-14
问题内容

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

从AngularJS网站:

在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;
    });
  };
}

这是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);      
    }
  });
});

如果我检查tcpdump(对不起,我是老式的),我会看到:

Connection:.keep-alive....Moved.Temporarily..Redirecting.to.https://api.twitter.com/oauth/authorize?oauth_token=***

当然,这确实非常好,而且确实发生在我/sessions/connect在浏览器中手动转到该服务器时。但是,使用AngularJS,我的浏览器屏幕实际上并未重定向。为什么不?


问题答案:

$http去为您获取页面内容。但是,它可以使您的结果重返承诺。除非您要求,否则它根本不会更改您的页面。在then处理程序中,您可以执行一些操作来重定向页面。这里有一个如何执行此操作的示例:处理来自AngularPOST的快速重定向



 类似资料:
  • 我正在学习angularjs,作为一个测试项目,我正在轮询一个返回活动进程列表(它们的pid)并显示这些进程的服务器。 客户端代码如下所示: 这适用于Firefox和Chrome,但不太适用于Internet Explorer 11。 所有浏览器每秒都执行ReloadData方法,但IE11实际上并不从服务器获取流程数据。Firefox和Chrome确实每秒都会获取数据。我也可以在服务器的输出中看

  • 问题内容: 在我的控制器中,我调用返回承诺的服务 在我的服务中,我通过直接将url传递给图像本身来获取图像: 所有调用都成功,并且response.data似乎保存在以下图像中: 虽然我不确定它是否确实可以,因为我无法显示它。我已经尝试过(在index.html内部) 有想法吗?是否可以从$ http.get返回实际图像并将其响应转换回图像(jpeg等) 谢谢! 问题答案: 返回的图像采用二进制编

  • 问题内容: 我有一个内存中大约有1000个项目的数据集,正在尝试为此数据集创建一个传呼机,但是我不确定如何执行此操作。 我使用的是自定义过滤器功能来过滤结果,效果很好,但是以某种方式我需要获取页面数。 有什么线索吗? 问题答案: 查看UI Bootstrap的分页指令。我最终使用了它,而不是使用此处发布的内容,因为它具有当前使用的足够功能,并且具有详尽的测试规范。 视图 控制者 我做了一个工作的小

  • 我正试图将我的谷歌Chrome扩展移植到Firefox插件SDK,我需要扩展来过滤网页从我的网站和使重定向。例如,如果用户打开“http://example.com/special”,我需要将他发送到同一个浏览器选项卡中的“http://example.com/redirect”。

  • 问题内容: AngularJS可以做的有趣的事情之一是将过滤器应用于特定的数据绑定表达式,这是一种方便的方法,例如,应用区域性特定的货币或模型属性的日期格式。在范围上具有计算属性也很好。问题在于这些功能都不适用于双向数据绑定方案- 从作用域到视图仅单向数据绑定。在一个本来不错的图书馆中,这似乎是一个明显的遗漏-还是我错过了什么? 在KnockoutJS中,我可以创建一个读/写计算属性,该属性允许我