NodeJs获取请求返回错误数据

时间:2015-04-08 13:25:58

标签: node.js post get request

我正在中间建立一个男人'类型服务器。用户从我的节点服务器请求页面,我的节点服务器从源服务器请求页面并在下次请求页面时缓存它们。

我目前正在尝试在原始服务器上打开会话。

如果我访问此网址

www.originDomain.co.uk/ajax/login.php?username=user@emailHost.com&password=password

会话成功打开,我得到一个回复​​(来自php脚本)说登录。

我似乎无法在node.js中复制此请求我正在使用此代码:

        var data = querystring.stringify({
           username: 'user@emailHost.com',
           password: 'password'
        });

        var options = {
            host: 'www.originDomain.co.uk',
            port: 80,
            path: '/ajax/login.php',
            method: 'GET',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': Buffer.byteLength(data)
            }
        };

        var req = http.request(options, function(res) {
            res.setEncoding('utf8');
            res.on('data', function (chunk) {
                console.log("body: " + chunk);
            });
        });

        req.write(data);
        req.end();

通过此调用我得到一个响应(来自PHP脚本)说"请输入用户名"

我假设查询字符串没有随请求一起发送,就像您只是访问www.originDomain.co.uk/ajax/login.php一样,您收到消息"请输入用户名&#34 34。

请帮助,现在试图解决这个问题3个小时。我查看了节点文档和iv搜索论坛,但似乎没有解决它。

2 个答案:

答案 0 :(得分:1)

您似乎正在尝试在GET请求的正文中发送您的登录凭据。另外,为了简化您的请求处理,您可能希望使用request而不是节点的原生http.request

示例:

var options = {
  url: 'https://www.originDomain.co.uk/ajax/login.php',
  qs: {
    username: 'user@emailHost.com',
    password: 'password'
  }
};

request(options, function(err, resp, body) {
  console.log(body);
});

那就是说,首先,我会担心在GET请求中将用户凭据作为查询参数发送。

答案 1 :(得分:0)

我找到了解决方案。 说实话,不知道这是如何解决我的问题的......但确实如此。

        var headers = {
          'User-Agent':       'Super Agent/0.0.1',
          'Content-Type':     'application/x-www-form-urlencoded'
        }

        // Configure the request
        var options = {
            url: 'http://www.originDomain.co.uk/ajax/login.php',
            method: 'GET',
            headers: headers,
            qs: {'username': 'user@domain.com', 'password':'password'}
        }

        // Start the request
        req(options, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                // Print out the response body
                console.log(body)
            }
        })