Standard dodawania wielu wartości pojedynczego nagłówka HTTP do żądania lub odpowiedzi

Jeśli chcę dodać listę wartości jako nagłówek HTTP, czy istnieje standardowy sposób na to? Nie mogłem znaleźć niczego (co mógłbym łatwo zrozumieć) w RFC 822. Na przykład, jest wartości rozdzielone przecinkami wartości standardowe lub wartości rozdzielone dwukropkiem. Czy jest jakiś standard?

Przykład:

Key: value1;value2;value3
Author: jconlin, 2010-06-23

3 answers

Będziesz chciał rzucić okiem na specyfikację HTTP RFC 2616 Gdzie jest napisane:

Wiele pól nagłówka wiadomości z ta sama nazwa pola może występować w wiadomość wtedy i tylko wtedy, gdy cała field-Wartość dla tego pola nagłówka wynosi zdefiniowana jako lista rozdzielona przecinkami [tj. #(wartości)]. To musi być możliwe aby połączyć wiele pól nagłówka into one " field-name: field-value" para, bez zmiany semantyki wiadomości, poprzez dołączenie każdego kolejne pole-wartość do pierwszego, każdy oddzielony przecinkiem. Order w którym pola nagłówka z tym samym Nazwa pola jest zatem odbierana istotne dla interpretacji połączoną wartość pola, a więc pełnomocnik nie może zmieniać kolejności wartości tych pól, gdy wiadomość jest / align = "left" /

Oznacza to, że możesz wysłać ten sam nagłówek wiele razy w odpowiedzi z różnymi wartościami, o ile wartości te mogą być dołączane do siebie za pomocą przecinek. Oznacza to również, że można wysyłać wiele wartości w jednym nagłówku, łącząc je przecinkami.

Więc w Twoim przypadku będzie to:

Key: value1,value2,value3
 75
Author: Marc Novakowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-22 20:51:25

Jak najbardziej @ marc-Nowakowski zawężasz "problem":)

Normalnie (na specyfikację HTTP) oddzielamy każdą wartość od innych za pomocą przecinka ', '

Ale zbadamy prosty przypadek:

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   

Jak połączyć takie nagłówki, gdy wartości jedna od drugiej są oddzielone przecinkami-przypadek, gdy może pojawić się coma ???

Wtedy obowiązkiem "klienta" jest wybrać i zdecydować strategię np drop, merg (jeśli merg jak)?

Proszę spojrzeć na implementację Mozilli nsHttpHeaderArray

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

Mozilla wybiera użycie ogranicznika nowej linii '\N ' w tym przypadku (dla niektórych nazw pól nagłówka)

Zachęcam w takiej sytuacji do poszukiwania wspólnych istniejących rozwiązań - ponieważ dostarczają one znane Schemat

 5
Author: ceph3us,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-08 14:41:50

Jednak nie wszystkie wartości o tej samej nazwie pola mogą być łączone w listę wartości pola. Na przykład w RFC 7230 możemy odczytać

Uwaga: w praktyce pole nagłówka "Set-Cookie" ([RFC6265]) często pojawia się wielokrotnie w wiadomości odpowiedzi i nie używa składnia listy, naruszając powyższe wymagania w wielu nagłówkach pola o tej samej nazwie. Ponieważ nie można go połączyć w Pojedyncze pole-wartość, odbiorcy powinni uchwyt "Set-Cookie" jako specjalny przypadek podczas przetwarzania pól nagłówka. (Zob. Dodatek A. 2.3 z dnia [Kri2001] o szczegóły.)

 4
Author: MarianD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-30 14:53:02