Jaka jest maksymalna długość żądania HTTP GET ?
Czy zdefiniowano błąd odpowiedzi, który serwer może / powinien zwrócić, jeśli otrzyma żądanie GET przekraczające tę długość?
Jest to w kontekście interfejsu API usługi internetowej, chociaż interesujące jest również ograniczenie przeglądarki.
web-services
http
Mark Harrison
źródło
źródło
Odpowiedzi:
Limit zależy zarówno od używanego serwera, jak i klienta (i, w stosownych przypadkach, także od serwera proxy, z którego korzysta serwer lub klient).
Większość serwerów WWW ma limit 8192 bajtów (8 KB), który zwykle można skonfigurować gdzieś w konfiguracji serwera. Jeśli chodzi o stronę klienta, specyfikacja HTTP 1.1 nawet o tym ostrzega. Oto fragment rozdziału 3.2.1 :
Limit w Internet Explorerze i Safari wynosi około 2 KB, w Operze około 4 KB, aw Firefoksie około 8 KB. Możemy zatem założyć, że 8 KB to maksymalna możliwa długość i że 2 KB to bardziej przystępna długość, 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 na serwerze, większość po prostu obetnie znaki poza limitem bez żadnego ostrzeżenia. Niektóre serwery mogą jednak wysyłać błąd HTTP 414 . Jeśli chcesz wysłać duże dane, lepiej użyj POST zamiast GET. Jego limit jest znacznie wyższy, ale bardziej zależy od używanego serwera niż klienta. Zwykle serwer WWW pozwala na maksymalnie około 2 GB. Można to również skonfigurować gdzieś w ustawieniach serwera. Przeciętny serwer wyświetli błąd / wyjątek specyficzny dla serwera, gdy limit POST zostanie przekroczony, zwykle jako błąd HTTP 500.
źródło
Zadajesz tutaj dwa osobne pytania:
Jak już wspomniano, sam HTTP nie narzuca żadnego sztywnego limitu długości żądania; ale przeglądarki mają limity od 2 KB do 8 KB (255 bajtów, jeśli liczymy bardzo stare przeglądarki).
Tego nikt nie odpowiedział.
HTTP 1.1 określa kod statusu
414 Request-URI Too Long
dla przypadków, w których osiągnięty został limit zdefiniowany przez serwer. Możesz zobaczyć dalsze szczegóły na temat RFC 2616 .W przypadku limitów zdefiniowanych przez klienta nie ma sensu, aby serwer coś zwracał, ponieważ serwer w ogóle nie otrzyma żądania.
źródło
Limity przeglądarki to:
Chcieć więcej? Zobacz to pytanie na temat przepełnienia stosu .
źródło
Podobne pytanie jest tutaj: czy istnieje limit długości żądania GET?
Osiągnąłem limit i na moim współdzielonym koncie hostingowym, ale myślę, że przeglądarka zwróciła pustą stronę, zanim dotarła na serwer.
źródło
Technicznie widziałem, że HTTP GET będzie miał problemy, jeśli długość adresu URL przekroczy 2000 znaków. W takim przypadku lepiej użyć HTTP POST lub podzielić adres URL.
źródło
Jak już wspomniano, sam HTTP nie narzuca żadnego sztywnego limitu długości żądania; ale przeglądarki mają ograniczenia od 2048 znaków dozwolone w metodzie GET.
źródło
Tak. Żądanie GET nie ma limitu.
Jestem w stanie wysłać ~ 4000 znaków jako część ciągu zapytania za pomocą przeglądarki Chrome i polecenia curl.
Korzystam z serwera Tomcat 8.x, który zwrócił oczekiwaną odpowiedź 200 OK.
Oto zrzut ekranu żądania HTTP Google Chrome (ukrywanie punktu końcowego, którego próbowałem ze względów bezpieczeństwa):
ODPOWIEDŹ
źródło