在浏览器中,如果我发送GET请求,请求将同时发送cookie。现在我想模拟来自Node的GET请求,然后如何编写代码?
答案 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);