Czy kolejność nagłówków w odpowiedzi HTTP ma kiedykolwiek znaczenie?
Czy kiedykolwiek ma znaczenie, czy kolejność nagłówków jest
A: 1
B: 2
Vs
B:2
A:1
Próbuję dowiedzieć się, czy mogę użyć słownika do przechowywania listy nagłówków lub czy musi to być jakaś lista lub uporządkowany słownik.
5 answers
Nie, to nie ma znaczenia dla nagłówków o różnych nazwach. Patrz RFC 2616 , Sekcja 4.2:
Kolejność w jakiej nagłówki pól o różnych nazwach pól są otrzymany nie jest znaczący. Jednak" dobrą praktyką " jest wysyłanie ogólne-pola nagłówka najpierw, a następnie request-header lub response- pola nagłówka i kończące się polami nagłówka encji.
Ma to jednak znaczenie dla wielu nagłówków o tej samej nazwie:
Wiele pól nagłówka wiadomości o tej samej nazwie może być przedstawić w wiadomości wtedy i tylko wtedy, gdy całe pole-wartość dla tego pole nagłówka jest zdefiniowane jako lista rozdzielana przecinkami [tzn. #(wartości)]. Musi być możliwe łączenie wielu pól nagłówka w jedno para "field-name: field-value", bez zmiany semantyki wiadomości, poprzez dołączenie każdej kolejnej wartości pola do pierwszej, każdej oddzielone przecinkiem. Kolejność w jakiej pola nagłówka z tym samym Nazwa pola jest zatem istotna dla interpretacja połączonej wartości pola, a więc proxy nie może Zmień kolejność tych wartości pól, gdy wiadomość jest przekazywana.
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
2009-04-15 04:44:48
Kolejność nagłówków nie powinna mieć znaczenia. Mogą być "słabsze" implementacje standardu HTTP, gdzie kolejność ma znaczenie, ale ogólnie nie powinno.
Oto link opisujący nagłówki HTTP:
Http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
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
2009-04-15 04:45:02
Nagłówki HTTP są niezależne od siebie i możesz użyć słownika do ich przechowywania bez martwienia się o ich kolejność.
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
2009-04-15 04:42:57
Może mieć to również znaczenie przy kilkukrotnym określeniu set-cookie
dla tego samego pliku cookie:
"Set-Cookie: COOKIE1=VALUE1; ...
"Set-Cookie: COOKIE1=VALUE2; ...
W tym przypadku COOKIE1
zostanie ustawione na VALUE2
, a jeśli kolejność zostanie zmieniona:
"Set-Cookie: COOKIE1=VALUE2; ...
"Set-Cookie: COOKIE1=VALUE1; ...
COOKIE1
zostanie ustawione na VALUE1
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
2015-08-29 00:18:45
RFC 7230, sekcja 3.2.2: Field Order odnosi się konkretnie do tego pytania. Cytaty pochodzą z tej sekcji specyfikacji, z podkreśleniem dodanym przeze mnie:
Kolejność odbierania pól nagłówkowych o różnych nazwach pól jest nieistotna.
Dalej można to zakwalifikować notatką o dobrych praktykach dla dobra wydajności:
Dobrą praktyką jest jednak wysyłanie pól nagłówkowych zawierających najpierw kontroluj dane, takie jak Host na żądanie i data odpowiedzi, aby implementacje mogły zdecydować, kiedy nie obsłużyć wiadomości tak wcześnie, jak to możliwe.
W niektórych przypadkach dopuszczalne jest, aby wiadomość zawierała wiele pól nagłówka o tej samej nazwie. W tym przypadku porządek ma znaczenie.
Odbiorca może łączyć wiele pól nagłówka o tej samej nazwie w jedną parę "field-name: field-value", bez zmiany semantyki wiadomości, poprzez dodawanie każdej kolejnej wartości pola do połączonej wartości pola w kolejności oddzielonej przecinkiem. Kolejność odbierania pól nagłówka o tej samej nazwiejest zatem znacząca dla interpretacji łącznej wartości pola.
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
2018-09-20 21:07:00