7

在浏览器中,如果我发送 GET 请求,请求会同时发送 cookie。现在我想模拟一个来自Node的GET请求,那么代码怎么写呢?

4

3 回答 3

15

使用奇妙的请求库 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')
})
于 2012-09-06T02:32:23.860 回答
4

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

但 Femi 几乎可以肯定是对的:处理 cookie 充满了相当挑剔的细节,而且你几乎总是会更好地使用已经编写好的代码,更重要的是,经过测试。如果您尝试重新发明这个特定的轮子,您可能会想出似乎在大多数情况下都可以工作的代码,但偶尔会莫名其妙地失败。

于 2012-09-06T06:31:24.063 回答
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);
于 2017-02-23T22:44:16.843 回答