Czy w nagłówkach HTTP rozróżnia się wielkość liter?
W poście na blogu używam następującego PHP, aby ustawić content-type odpowiedzi:
header('content-type: application/json; charset=utf-8');
Właśnie dostałem komentarz do tego posta mówiący, że content-type
musi być pisane wielkimi literami, Content-type
. Czy to prawda? Wydaje się, że działa dla mnie ze wszystkimi małymi literami i założyłem, że nagłówki HTTP były niewrażliwe na wielkość liter. A może po prostu działa, bo przeglądarki są ładne?
5 answers
Nazwy nagłówków nie uwzględniają wielkości liter.
From RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1", Sekcja 4.2, "nagłówki wiadomości":
Każde pole nagłówka składa się z nazwy, po której następuje dwukropek (":") i wartość pola. Nazwy pól są niewrażliwe na wielkość liter.
Aktualizacja RFC 7230 nie wymienia żadnych zmian z RFC 2616 w tej części.
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-08-10 22:56:30
Nazwy nagłówków HTTP są niewrażliwe na wielkość liter, zgodnie z RFC 2616:
4.2:
Każde pole nagłówka składa się z nazwy, po której następuje dwukropek (":") i wartość pola. Nazwy pól są niewrażliwe na wielkość liter.
(pole wartości mogą, ale nie muszą, uwzględniać wielkość liter.)
Jeśli ufasz głównym przeglądarkom, że tego przestrzegają, jesteś gotowy.
BTW, w przeciwieństwie do większości HTTP, metody (czasowniki) są rozróżnia wielkość liter:
5.1.1 Metoda
Token metody wskazuje metoda do wykonania na
zasób zidentyfikowany przez Prośba-URI. Metoda jest rozróżnianie wielkości liter.Method = "OPTIONS" ; Section 9.2 | "GET" ; Section 9.3 | "HEAD" ; Section 9.4 | "POST" ; Section 9.5 | "PUT" ; Section 9.6 | "DELETE" ; Section 9.7 | "TRACE" ; Section 9.8 | "CONNECT" ; Section 9.9 | extension-method extension-method = token
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
2012-12-13 16:33:57
Tldr; zarówno nagłówki HTTP / 1.1, jak i HTTP / 2 są niewrażliwe na wielkość liter.
Zgodnie z RFC 7230 (HTTP / 1.1):
Każde pole nagłówka składa się z nazwy pola bez rozróżniania wielkości liter po którym następuje dwukropek ( " :"), opcjonalne początkowe spacje, pole wartość i opcjonalne końcowe spacje.
Https://tools.ietf.org/html/rfc7230#section-3.2
Również, RFC 7540 (HTTP / 2):
Tak jak w HTTP / 1.x, nagłówek nazwy pól są ciągami znaków ASCII
znaki, które są porównywane w sposób niewrażliwy na wielkość liter.
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-12-15 17:22:51
header('Content-type: image/png')
nie działa z PHP 5.5 obsługującym IE11, ponieważ w strumieniu obrazu był wyświetlany jako tekst
header('Content-Type: image/png')
pracował, jak na obrazie pojawił się jako obraz
Jedyną różnicą jest duże "T".
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-12-02 09:27:57
RFC dla HTTP (jak wspomniano powyżej) nakazuje, że nagłówki są niewrażliwe na wielkość liter, jednak w niektórych przeglądarkach (patrzę na Ciebie, IE), że pisanie wielkimi literami każdego ze słów wydaje się być najlepsze:
Location: http://stackoverflow.com
Content-Type: text/plain
Vs
location: http://stackoverflow.com
content-type: text/plain
To nie jest standard "HTTP", ale po prostu kolejny z dziwactw przeglądarki, my jako programiści, musimy myśleć.
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-05-06 14:55:03