我目前正在尝试在原始服务器上打开会话。
如果我访问此网址
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搜索论坛,但似乎没有解决它。
答案 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)
}
})