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


93

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

Cookie: a=1; b=2

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

Cookie: a=1
Cookie: b=2

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

답변:


129

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

5.4. 쿠키 헤더

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

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


8
이 미친 새로운 RFC. :)
Kylar 2010 년

12
있습니다 서버가 여러으로 응답 할 수 Set-Cookie헤더 : tools.ietf.org/html/rfc6265#page-7
마이클 하렌

2
OP가 HTTP 응답이 아닌 HTTP 요청과 관련하여 특별히 요청한 이유. @JeffDavenport
제임스 종

2
Jeff와 같은 Google에서 여기로 오는 사람들의 경우 OP는 ";"로 구분하여 여러 변수를 가질 수 있음을 보여줍니다. (공간이 필요하지 않습니다)
알버트 Hendriks에게

2
@HawkeyeParker- 올바른 것을 암시 할 수 없습니다 . 값이 단일 서버에 의해 설정되는 경우 보다 더 정확 하다고 주장 합니다. 사양에 따르면 서버는 여러 Set-Cookie 헤더 필드를 하나의 필드 로 접어서 는 안되지만 여러 Set-Cookie 헤더 필드를 하나의 응답에 추가 할 수 있습니다 . 이것이 실제로 의미하는 바는 프록시 서버가 응답을 전달할 때 해당 프록시가 쿠키를 설정하면 별도의 Set-Cookie 헤더를 사용해야한다는 것입니다. Set-Cookie:a=b;c=d;Set-Cookie:a=b; Set-Cookie:c=d;
Golphy

24

이제 다음을 지정하는 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.