代码之家  ›  专栏  ›  技术社区  ›  pguardiario

带有Cookie的节点http2请求

  •  0
  • pguardiario  · 技术社区  · 5 年前

    节点http2请求如下:

    const client = http2.connect('https://somehost.com')
    const req = client.request( {
      ':path': '/some/path',
      ':method': 'GET',
      'header-name': 'header-value',
      'cookie': 'foo=bar'  
    } )
    

    像这样发送多个cookie头似乎是不可能的。我错过了什么吗?请注意,Cookie不应像http/https标头那样连接。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Community CDub    4 年前

    所以我的理解是,如果客户端是HTTP/2,那么你就可以像劳伦斯说的那样用分号连接Cookie。如果服务器也是HTTP/2,这很好,但是如果服务器是HTTP/1.1,则需要一些额外的处理来连接它们。

    如果后面有多个Cookie头字段 解压缩时,这些必须连接成一个八位字节字符串 使用0x3B、0x20(ASCII字符串“;”)这两个八位字节分隔符

    已通过HTTP2规范确认 https://www.rfc-editor.org/rfc/rfc7540#section-8.1.2.5

        2
  •  0
  •   xdeepakv    5 年前

    正如文档中所说,重复的cookie标头由 ";" set-cookie 应该是数组。

    https://nodejs.org/api/http2.html#http2_headers_object

    setcookie始终是一个数组。重复项将添加到阵列中。 对于重复的cookie标头,这些值用“;”连接在一起。

    const client = http2.connect('https://somehost.com')
    const req = client.request( {
      ':path': '/some/path',
      ':method': 'GET',
      'header-name': 'header-value',
      'Set-Cookie': ['ting="tang; expires=0; path=/;"', 'wallawalla="bingbang; expires=123456789; path=/;"'],
    } )