web-dev-qa-db-ja.com

HTTPリクエストで複数のCookieヘッダーを使用できますか?

通常、ブラウザは次のような単一のCookieヘッダーにCookieをグループ化します。

Cookie: a=1; b=2

標準では、これらを次のような個別のヘッダーとして送信できますか?

Cookie: a=1
Cookie: b=2

または、彼らは常に同じ行にいる必要がありますか?

82
Benjamin

トピックの詳細を探しながら、このページを偶然見つけました。 HTTP State Management Mechanismからの引用、 RFC 6265 物事をより明確にする必要があります:

5.4。 Cookieヘッダー

ユーザーエージェントがHTTPリクエストを生成する場合、ユーザーエージェントは複数のCookieヘッダーフィールドを添付してはなりません。

複数のCookieヘッダーの使用isが禁止されているようです。

113
James Chong

hTTP/2( RFC 754 )で許可されるようになりました。

    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
14
wusatosi