【问题标题】:How to implement cookiejar wtih http2如何使用 http2 实现 cookie jar
【发布时间】:2018-10-25 19:39:18
【问题描述】:

我正在尝试发出一些 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 带到下一个请求中?

【问题讨论】:

    标签: javascript node.js http http2


    【解决方案1】:

    找到了一个很好的解决方案。我可以简单地使用包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。

    【讨论】:

      猜你喜欢
      • 2012-01-06
      • 2016-12-15
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      相关资源
      最近更新 更多