2014-03-04 35 views
2

我正在尝试登录到teeSpring.com,然后使用登录cookie从另一个URL获取响应。当有人登录到teeSpring.com时,它会返回仪表板详细信息。
但是,每当我尝试GET秒的网址,teeSpring都会返回相同的仪表板详细信息。
如果我在Chrome的REST客户端中同时访问了这两个网址,则会返回预期的不同响应。
那么我的请求有什么问题?
节点JS:即使在更改了url之后,响应也不会被更改

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

这里是代码:

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

    }); 
+0

我不确定,但尝试重命名GET回调函数参数'error'和'response'。这取决于你是否使用严格模式,但相同的变量名可能会或可能不会起作用(即使使用此).. – supertopi

+0

没有运气。仍然是同样的问题。 –

+0

你可以调试你的node.js代码吗?在行res.send(analyticsBody)上设置一个断点;''analyticsBody'真的等于'body'吗? – supertopi

回答

0

我创建了一个要点在Github上有一些代码:https://gist.github.com/Stofkn/11397460

只需更换需要( 'supertest')与要求( '的SuperAgent' )。 https://github.com/visionmedia/superagent

使用此模块可以很容易地将cookie附加到您的请求。

基本上,您需要附加从POST请求收到的cookie,以便您对GET请求进行验证。

的线是重要的:

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

也改变,我在请求使用路径。 js文件。在你的情况下,你不能给一个baseurl,因为他们是不同的。

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

相关问题