我正在尝试制作一些http2请求,但我根本不知道如何在节点中实现cookie jar /容器 - 而不是标准的http或http2。我看过网上但我还没有找到解决方案。比方说,我想发出以下http2请求:
const client = http2.connect('https://twitter.com');
const req = client.request({':method': 'GET', ':path': '/' });
req.setEncoding("utf8");
var body = "";
req.on('response', (responseHeaders) => {
});
req.on('data', (chunk) => {
body += chunk;
});
req.on('end', () =>{
console.log(body);
client.destroy();
});
然后我将如何处理后续请求之间的cookie /会话。例如,此请求在响应标头中设置cookie。如何将这些cookie带到下一个请求中?
答案 0 :(得分:0)
制定了一个很好的解决方案。我可以简单地使用包tough-cookie
并实现一个函数来存储cookie,如下所示:
var cookiejar = new tough.CookieJar();
function storeCookies(responseHeaders, jar){
responseHeaders['set-cookie'].forEach(function(value){
jar.setCookie(value, "https://twitter.com/", function(){
});
});
};
然后在发出请求时,我可以通过将其加载到tough-cookie
的字符串中来设置该请求的Cookie标头:
var string = "";
cookiejar.getCookies('https://twitter.com/',function(err,cookies) {
string = cookies.join('; ');
});
tough-cookie
然后自动处理以合规方式过期和存储cookie。