我可以发送一个GET请求与Cookie中的标头中的节点?
在浏览器中,如果我发送一个GET请求,请求将同时发送cookie。 现在我想模拟来自Node的GET请求,然后如何编写代码?
使用奇妙的请求库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') })
如果你想用本地的http:request()
方法来完成这个工作,你需要在options
参数的headers
成员中设置合适的Set-Cookie
头文件(请参见HTTP引用)。 本机代码中没有处理cookie的具体方法。 如果你需要具体的例子,请参考Mikeal的request
库中的源代码和connect中的cookieParser
代码。
但费米几乎肯定是正确的:处理cookies是充满了相当棘手的细节,你几乎总是会使用已经写好的代码,更重要的是testing更好。 如果你试图重新发明这个特定的轮子,你很可能会想出大部分时间都可以运行的代码,但是偶尔和不可预测的代码会神秘地失败。
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);