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


91

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

Cookie: a=1; b=2

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

Cookie: a=1
Cookie: b=2

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

回答:


127

トピックの詳細を探しながら、このページを変更しました。RFC 6265からの引用はHTTP State Management Mechanism、物事をより明確にするはずです:

5.4。Cookieヘッダー

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

これは、複数の使用のように見えるCookieヘッダがされ、実際には、禁止します!


8
これらの狂気の新しい手間のかかるRFC。:)
Kylar 2013年

12
サーバーは複数のSet-Cookieヘッダーで応答できることに注意してください:tools.ietf.org/html/rfc6265#page-7
Michael Haren

2
OPがHTTP応答ではなくHTTP要求に関して具体的に尋ねたように、なぜ反対投票なのか。@JeffDavenport
James Chong

2
JeffのようにGoogleからここに来る人の場合、OPは ";"で区切ることで複数の変数を持つことができることを示しています (スペースは必要ありません)
アルバートヘンドリックス2017年

2
@HawkeyeParker- 正しいことを示すことできません。これは、値が単一のサーバーによって設定される場合よりも正しいと主張します。仕様では、サーバーは複数のSet-Cookieヘッダーフィールドを1つのフィールドに折りたたむことはできませんが、複数のSet-Cookieヘッダーフィールドを1つの応答に追加できます。つまり、プロキシサーバーが応答を渡すときに、そのプロキシがCookieを設定する場合、別のSet-Cookieヘッダーを使用する必要があります。Set-Cookie:a=b;c=d;Set-Cookie:a=b; Set-Cookie:c=d;
Golphy、2017

23

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.