maksymalna długość żądania HTTP GET?
Jaka jest maksymalna długość żądania HTTP GET? Czy jest zdefiniowany błąd odpowiedzi, który serwer może/powinien zwrócić, jeśli otrzyma żądanie GET przekraczające tę długość?
Update: Jak wskazano w tagach, jest to w kontekście interfejsu API usługi internetowej, chociaż interesujące jest również wyświetlanie limitów przeglądarki.
7 answers
Limit zależy zarówno od serwera, jak i użytego klienta (i jeśli ma to zastosowanie, również od proxy, z którego korzysta serwer lub klient).
Większość serwerów ma limit 8192 bajtów (8KB), który zwykle można skonfigurować gdzieś w konfiguracji serwera. Jeśli chodzi o sprawy po stronie klienta, Specyfikacja HTTP 1.1 ostrzega nawet o tym, oto fragment rozdziału 3.2.1:
Uwaga: serwery powinny być ostrożne w zależności od długości URI powyżej 255 bajtów, ponieważ jakiś starszy klient lub proxy implementacje mogą nie obsługiwać odpowiednio tych długości.
Limit wynosi w MSIE i Safari około 2KB, w Operze około 4KB, a w Firefoksie około 8KB. Możemy więc założyć, że 8KB jest maksymalną możliwą długością i że 2KB jest bardziej przystępną długością, na której można polegać po stronie serwera i że 255 bajtów jest najbezpieczniejszą długością, aby założyć, że cały URL wejdzie.
Jeśli limit zostanie przekroczony w przeglądarce lub w serwer, większość po prostu obetnie znaki poza limitem bez żadnego ostrzeżenia. Niektóre serwery mogą jednak wysłać błąd HTTP 414 . Jeśli chcesz wysłać Duże dane, lepiej Użyj POST zamiast GET. Jego limit jest dużo wyższy, ale bardziej zależny od używanego serwera niż Klienta. Zwykle Przeciętny serwer WWW dopuszcza do około 2 GB. Można to również skonfigurować gdzieś w ustawieniach serwera. Przeciętny serwer wyświetli konkretny serwer błąd / wyjątek po przekroczeniu limitu POST, zwykle jako błąd HTTP 500.
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-04-17 20:53:35
Zadajesz dwa oddzielne pytania:
Jaka jest maksymalna długość żądania HTTP GET?
Jak już wspomniano, sam HTTP nie nakłada żadnych ograniczeń na długość żądania; ale przeglądarki mają limity od 2kb do 8kb(255 bajtów, jeśli liczymy bardzo stare przeglądarki).
Czy jest zdefiniowany błąd odpowiedzi, który serwer może/powinien zwrócić, jeśli otrzyma żądanie GET przekraczające tę długość?
to jest nikt nie odpowiedział.
HTTP 1.1 definiuje kod statusu 414 Request-URI Too Long
dla przypadków, w których został osiągnięty limit zdefiniowany przez serwer. Możesz zobaczyć więcej szczegółów na RFC 2616 .
W przypadku limitów zdefiniowanych przez Klienta, nie ma sensu zwracać czegoś na serwerze, ponieważ serwer w ogóle nie otrzyma żądania.
Mam nadzieję, że to pomoże.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-11-13 20:54:53
Podobne pytanie tutaj: Czy istnieje ograniczenie długości żądania GET?
Osiągnąłem limit i na moim współdzielonym koncie hostingowym, ale przeglądarka zwróciła pustą stronę, zanim trafiła na serwer.
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
2017-05-23 11:54:53
Ograniczenia przeglądarki to:
Browser Address bar document.location
or anchor tag
------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
IE11 2047 5120
Edge 16 2047 10240
Chcesz więcej? Zobacz to pytanie na Stack Overfollow 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-05-24 13:05:30
Technicznie widziałem HttpGet będzie miał problem, jeśli długość URL przekracza 2000 znaków. W takim przypadku lepiej jest użyć HttpPost lub podzielić adres URL.
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
2013-06-25 19:39:31
Jak już wspomniano, sam HTTP nie nakłada żadnych ograniczeń na długość żądania; ale przeglądarki mają ograniczenia w zakresie 2048 znaków dozwolonych w metodzie get.
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-07-08 13:41:37
Tak. Nie ma limitu na żądanie GET.
I am able to send ~4000 characters as part of the query string using chrome browser & curl command both.
Używam tomcat 8.serwer X, który zwrócił oczekiwał 200 odpowiedzi OK.
Oto zrzut ekranu żądania HTTP chrome (ukrywanie punktu końcowego, którego próbowałem ze względów bezpieczeństwa):
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
2017-09-03 16:11:33