wake-up-neo.com

Standard zum Hinzufügen mehrerer Werte eines einzelnen HTTP-Headers zu einer Anfrage oder Antwort

Gibt es eine Standardmethode, um eine Liste von Werten als HTTP-Header hinzuzufügen? In RFC 822 konnte ich nichts finden (was ich leicht verstehen konnte). Es handelt sich beispielsweise um durch Kommas oder durch Semikolons getrennte Werte. Gibt es überhaupt einen Standard?

Beispiel:

Key: value1;value2;value3
58
jconlin

Werfen Sie einen Blick auf die HTTP-Spezifikation RFC 2616 , in der steht:

Mehrere Nachrichtenkopfzeilenfelder mit demselben Feldnamen KÖNNEN in einer Nachricht nur dann vorhanden sein, wenn der gesamte Feldwert für dieses Kopfzeilenfeld als durch Kommas getrennte Liste [d. H. # (Werte)] definiert ist. Es MUSS möglich sein, die mehreren Header-Felder zu einem "Feldname: Feldwert" -Paar zu kombinieren, ohne die Semantik der Nachricht zu ändern, indem jeder nachfolgende Feldwert an den ersten angehängt wird, wobei jeder durch ein Komma getrennt wird. Die Reihenfolge, in der Header-Felder mit demselben Feldnamen empfangen werden, ist daher für die Interpretation des kombinierten Feldwerts von Bedeutung. Ein Proxy darf daher die Reihenfolge dieser Feldwerte bei der Weiterleitung einer Nachricht NICHT ändern.

Dies bedeutet, dass Sie denselben Header mehrmals in einer Antwort mit unterschiedlichen Werten senden können, sofern diese Werte durch ein Komma aneinander angehängt werden können. Dies bedeutet auch, dass Sie mehrere Werte in einem einzigen Header senden können, indem Sie sie mit Kommas verketten.

In Ihrem Fall ist es also:

Key: value1,value2,value3
86
Marc Novakowski

auf alle fälle @ marc-novakowski du verengst das "problem" :)

normalerweise (gemäß HTTP-Spezifikation) grenzen wir jeden Wert durch ein Komma ',' von den anderen ab.

aber wir werden einen einfachen Fall untersuchen:

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   

wie fügt man solche Header zusammen, wenn die Werte durch Kommas voneinander abgegrenzt sind - Fall, in dem ein Koma auftreten kann ???

dann ist der "Klient" dafür verantwortlich, zu wählen und die Strategie zu bestimmen , z fallen lassen, merg (wenn merg wie)?

bitte schauen Sie sich die Mozilla-Implementierung von nsHttpHeaderArray an.

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

mozilla wählt in diesem Fall ein Newline-Trennzeichen '\ n' (für bestimmte Header-Feldnamen)

Ich ermutige Sie, in einer solchen Situation nach gängigen Lösungen zu suchen - da diese ein bekanntes Schema bieten

7
ceph3us

Es können jedoch nicht alle Werte mit demselben Feldnamen in einer Feldwerteliste zusammengefasst werden. Zum Beispiel können wir in RFC 72 lesen

Hinweis: In der Praxis wird das Headerfeld "Set-Cookie" ([RFC6265]) häufig mehrmals in einer Antwortnachricht angezeigt und verwendet nicht die Listensyntax. Dies verstößt gegen die oben genannten Anforderungen für mehrere Headerfelder mit demselben Namen. Da es nicht zu einem einzigen Feldwert zusammengefasst werden kann, sollten Empfänger "Set-Cookie" als Sonderfall bei der Verarbeitung von Headerfeldern behandeln. (Weitere Informationen finden Sie in Anhang A.2.3 von [Kri2001].)

4
MarianD