[http] HTTP 요청에 여러 쿠키 헤더가 허용됩니까?

일반적으로 브라우저는 쿠키를 다음 Cookie과 같은 단일 헤더 로 그룹화합니다 .

Cookie: a=1; b=2

표준에서 다음과 같은 별도의 헤더로 전송할 수 있습니까?

Cookie: a=1
Cookie: b=2

아니면 항상 같은 줄에 있어야합니까?



답변

주제에 대한 세부 정보를 찾는 동안이 페이지를 방문했습니다. HTTP State Management Mechanism, RFC 6265 의 인용문은 일을 더 명확하게해야합니다.

5.4. 쿠키 헤더

사용자 에이전트가 HTTP 요청을 생성 할 때 사용자 에이전트는 하나 이상의 쿠키 헤더 필드를 첨부하면 안됩니다.

실제로 여러 Cookie헤더를 사용하는 것이 금지 된 것 같습니다!


답변

이제 다음을 지정하는 HTTP / 2 ( RFC 7540 ) 에서 허용 됩니다.

    8.1.2.5.  Compressing the Cookie Header Field

   The Cookie header field [COOKIE] uses a semi-colon (";") to delimit
   cookie-pairs (or "crumbs").  This header field doesn't follow the
   list construction rules in HTTP (see [RFC7230], Section 3.2.2), which
   prevents cookie-pairs from being separated into different name-value
   pairs.  This can significantly reduce compression efficiency as
   individual cookie-pairs are updated.

   To allow for better compression efficiency, the Cookie header field
   MAY be split into separate header fields, each with one or more
   cookie-pairs.  If there are multiple Cookie header fields after
   decompression, these MUST be concatenated into a single octet string
   using the two-octet delimiter of 0x3B, 0x20 (the ASCII string "; ")
   before being passed into a non-HTTP/2 context, such as an HTTP/1.1
   connection, or a generic HTTP server application.

   Therefore, the following two lists of Cookie header fields are
   semantically equivalent.

     cookie: a=b; c=d; e=f

     cookie: a=b
     cookie: c=d
     cookie: e=f


답변