我可以在Node的标头中发送带有cookie的GET请求吗?

时间:2012-09-06 02:28:43

标签: node.js

在浏览器中,如果我发送GET请求,请求将同时发送cookie。现在我想模拟来自Node的GET请求,然后如何编写代码?

3 个答案:

答案 0 :(得分:15)

默认情况下启用奇妙的request库cookie。您可以像这样发送自己的(从Github页面获取):

var j = request.jar()
var cookie = request.cookie('your_cookie_here')
j.add(cookie)
request({url: 'http://www.google.com', jar: j}, function () {
  request('http://images.google.com')
})

答案 1 :(得分:4)

如果您想使用原生http:request()方法执行此操作,则需要在Set-Cookie中设置相应的headers标头(请参阅HTTP参考,了解它们的外观) options参数的成员;在本机代码中没有用于处理cookie的特定方法。如果您需要具体示例,请参阅Mikeal的request库中的源代码和cookieParser中的connect代码。

但是Femi几乎肯定是正确的:处理cookie充满了相当挑剔的细节,你几乎总是会更好地使用已经编写过的代码,更重要的是,经过测试。如果你试图重新发明这个特定的轮子,你很可能会提出似乎在大多数情况下都能正常工作的代码,但偶尔也会出现不可预测的神秘故障。

答案 2 :(得分:0)

var jar = request.jar();
const jwtSecret = fs.readFileSync(`${__dirname}/.ssh/id_rsa`, 'utf8');
const token = jwt.sign(jwtPayload, jwtSecret, settings);
jar.setCookie(`any-name=${token}`, 'http://localhost:12345/');
const options = {
  method: 'GET',
  url: 'http://localhost:12345',
  jar,
  json: true
};
request(options, handleResponse);