Node JS:即使更改了url,响应也不会更改

时间:2014-03-04 22:17:36

标签: javascript node.js

我正在尝试登录teeSpring.com然后使用登录Cookie从另一个网址获取响应。当有人登录teeSpring.com时,它会返回仪表板详细信息 但每当我尝试GET第二个网址时,teeSpring会返回相同的仪表板详细信息。
如果我在Chrome的REST客户端中同时点击两个网址,则会返回不同的响应,这是预期的。
那么什么我的要求是问题吗?

  
    

注意:如果有人需要用户名/密码进行测试,请告知我们。

  

这是代码:

var http = require('http'),
    express = require('express'),
    request = require('request');

var request = request.defaults({jar:true});

app.post('/login', [express.urlencoded(), express.json()], function(req, res) {
    request.post({
      url: 'http://teeSpring.com/login/submitLogin',
      form: {
        email: req.body.email,
        password: req.body.password
      }
    }, function(error, response, body) {
      if (error) {
        res.send(400, "There is some problem  here.");  
      } else if(response) {
        if(response.statusCode == 302 && response.headers && response.headers.location) {         
          request.get('http://analytics.teeSpring.com', function(error, response, analyticsBody){
            if(!this.error && this.response.statusCode==200) {
              res.send(analyticsBody);
            }
          });
        }
      } else {
        console.log('WTF');
      }

    });

1 个答案:

答案 0 :(得分:0)

我在Github上创建了一个Gist,其中包含一些代码:https://gist.github.com/Stofkn/11397460

只需用require(' superagent')替换require(' supertest')。 https://github.com/visionmedia/superagent

使用此模块,您可以轻松地将Cookie附加到您的请求中。

基本上您需要附上从POST请求中收到的cookie,以便您为GET请求进行autherized。

线条很重要:

function saveCookies (res) {
  agent.saveCookies(res);
}

发送POST和GET请求(保存cookie在request.js中完成):

request
  .post('/login')
  .send(formData)
  .end(function (err, res) {
    request
      .get('/test') 
      .end(function (err, res) {
         // some code        
       });
   });

还要更改我在request.js文件中使用的路径。在你的情况下,你不能给出一个基础,因为它们是不同的。

我希望这能解决您的问题!