web-dev-qa-db-ja.com

単一のHTTPヘッダーの複数の値を要求または応答に追加するための標準

値のリストをHTTPヘッダーとして追加する場合、これを行う標準的な方法はありますか? RFC 822には何も見つかりませんでした(簡単に理解できました)。たとえば、コンマ区切り値またはセミコロン区切り値です。規格はありますか?

例:

Key: value1;value2;value3
58
jconlin

HTTP仕様 RFC 2616 を見てください:

同じフィールド名を持つ複数のメッセージヘッダーフィールドは、そのヘッダーフィールドのフィールド値全体がコンマ区切りリストとして定義されている場合にのみ、メッセージに存在する場合があります[つまり、#(values)]。メッセージのセマンティクスを変更せずに、複数のヘッダーフィールドを1つの「フィールド名:フィールド値」ペアに結合し、後続の各フィールド値を最初に追加し、それぞれをコンマで区切ることが可能でなければなりません。したがって、同じフィールド名を持つヘッダーフィールドが受信される順序は、結合されたフィールド値の解釈にとって重要であるため、プロキシは、メッセージが転送されるときにこれらのフィールド値の順序を変更してはなりません。

これは、コンマを使用して値を互いに追加できる限り、異なる値の応答で同じヘッダーを複数回送信できることを意味します。これは、複数の値をコンマで連結することにより、単一のヘッダーで複数の値を送信できることも意味します。

あなたの場合、それは次のようになります:

Key: value1,value2,value3
86
Marc Novakowski

ぜひ@ marc-novakowskiで「問題」を絞り込んでください:)

通常(HTTP仕様ごと)、カンマ「、」を使用して各値を他の値から区切ります

しかし、単純なケースを調べます:

Cookie-set: language=pl; expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com   
Cookie-set: id=123 expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com; httponly   

値がカンマで区切られている場合、そのようなヘッダーをどのように結合しますか?-コマが表示される場合???

「クライアント」の責任はchooseであり、strategyを決定することです。 drop、merg(mergの場合)

nsHttpHeaderArrayのMozilla実装を見てください

https://github.com/bnoordhuis/mozilla-central/blob/master/netwerk/protocol/http/nsHttpHeaderArray.h#L185

mozillaは改行区切り文字 '\ n'を使用することを選択します(特定のヘッダーフィールド名に対して)

このような状況に直面した場合、一般的な既存のソリューションを検索することをお勧めします-よく知られたスキームを提供するためです

7
ceph3us

ただし、同じフィールド名を持つすべての値がフィールド値リストに結合されるわけではありません。たとえば、 RFC 72 では、

注:実際には、「Set-Cookie」ヘッダーフィールド([RFC6265])は応答メッセージに複数回出現することが多く、リスト構文を使用せず、同じ名前の複数のヘッダーフィールドに関する上記の要件に違反します。単一のフィールド値に結合できないため、受信者はヘッダーフィールドの処理中に特別なケースとして「Set-Cookie」を処理する必要があります。 (詳細については、[Kri2001]の付録A.2.3を参照してください。)

4
MarianD