Jaka jest maksymalna możliwa długość ciągu zapytania?

Czy to zależy od przeglądarki? Czy różne stosy internetowe mają różne limity ilości danych, które mogą uzyskać z żądania?

Author: mavis, 2009-05-01

4 answers

RFC 2616 (Hypertext Transfer Protocol - HTTP/1.1) stwierdza, że nie ma ograniczeń co do długości ciągu zapytania (sekcja 3.2.1). RFC 3986 również stwierdza, że nie ma limitu, ale wskazuje, że nazwa hosta jest ograniczona do 255 znaków z powodu ograniczeń DNS (sekcja 2.3.3).

Chociaż specyfikacje nie określają maksymalnej długości, praktyczne limity są nakładane przez przeglądarkę internetową i oprogramowanie serwera. Na podstawie badań znalezionych na Boutell.com :

  • Microsoft Internet Explorer (Przeglądarka)
    Microsoft twierdzi, że maksymalna długość adresu URL w przeglądarce Internet Explorer wynosi 2083 znaki, a w części ścieżki adresu URL nie więcej niż 2048 znaków. Próby użycia adresów URL dłuższych niż ten powodowały wyświetlenie wyraźnego Komunikatu o błędzie w przeglądarce Internet Explorer.

  • Microsoft Edge (Przeglądarka)
    Limit wynosi około 81578 znaków. Zobacz ograniczenie długości URL Microsoft Edge

  • Chrome
    Zatrzymuje wyświetlanie adresu URL po 64K znaków, ale może obsługiwać więcej niż 100k znaków. Poza tym nie przeprowadzono żadnych dalszych testów.

  • Firefox (Przeglądarka)
    Po 65 536 znakach Pasek lokalizacji nie wyświetla już adresu URL w systemie Windows Firefox 1.5.x. jednak dłuższe adresy URL będą działać. Nie przeprowadzono dalszych testów po 100 000 znaków.

  • Safari (Przeglądarka)
    Co najmniej 80 000 znaków będzie działać. Testy nie były próbowane poza tym.

  • Opera (Przeglądarka)
    Będzie działać co najmniej 190 000 znaków. Przestał testować po 190 000 znaków. Opera 9 Dla Windows nadal wyświetla w pełni edytowalną, kopiowalny i pastowalny adres URL na pasku lokalizacji nawet przy 190 000 znaków.

  • Apache (Serwer)
    Wczesne próby zmierzenia maksymalnej długości URL w przeglądarkach internetowych limit długości adresu URL serwera wynosi około 4000 znaków, po czym Apache generuje błąd "413 Entity Too Large". Wykorzystano aktualną aktualną kompilację Apache ' a znalezioną w Red Hat Enterprise Linux 4. Oficjalna dokumentacja Apache wspomina tylko o 8192-bajtowym limicie dla pojedynczego pola w żądaniu.

  • Microsoft Internet Information Server (Serwer)
    Domyślnym limitem jest 16 384 znaków (tak, Serwer Www Microsoftu akceptuje dłuższe adresy URL niż Przeglądarka internetowa Microsoftu). Jest to konfigurowalne.

  • Perl HTTP::Daemon (Serwer)
    Będzie działać do 8000 bajtów. Tych, którzy budują serwery aplikacji internetowych za pomocą Perla HTTP::Daemon moduł napotka limit 16,384 bajtów na łącznym rozmiarze wszystkich nagłówków żądań HTTP. Nie obejmuje To danych formularza POST-method, przesłanych plików itp., ale zawiera adres URL. W praktyce skutkowało to błędem 413, gdy adres URL był znacznie dłuższy niż 8000 znaków. Ograniczenie to można łatwo usunąć. Szukaj wszystkich wystąpień 16x1024 w Daemon.pm i zastąpić je większą wartością. Oczywiście zwiększa to narażenie na ataki typu denial of service.

 855
Author: Robert Cartaino,
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 12:34:45

Zakładam, że masz na myśli maksymalną długość łańcucha uri. To może pomóc.

Zazwyczaj, gdy URI staje się nieczytelne, ponieważ są zbyt długie, nadszedł czas, aby użyć żądania POST.

 8
Author: Snazzer,
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-05-01 19:47:03

Różne stosy internetowe obsługują różne długości żądań http. Wiem z doświadczenia, że wczesne stosy Safari obsługiwały tylko 4000 znaków i tym samym miały trudności z obsługą ASP.net strony ze względu na stan użytkownika. Jest to nawet dla posta, więc musisz sprawdzić przeglądarkę i zobaczyć, jaki jest limit stosu. Myślę, że możesz osiągnąć limit nawet w nowszych przeglądarkach. Nie pamiętam, ale jeden z nich (chyba IE6) miał limit 16-bitowy, 32768 czy coś.

 1
Author: kdevine,
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-05-01 19:52:11

Chociaż oficjalnie nie ma limitu, wiele zaleceń dotyczących konfiguracji zabezpieczeń stwierdza, że maxQueryStrings na serwerze powinien być ustawiony na maksymalny limit znaków 1024, podczas gdy cały adres url wraz z ciągiem zapytań powinien być ustawiony na maksymalnie 2048 znaków. Ma to zapobiec powolnemu żądaniu HTTP na serwerze WWW, aby zapobiec powolnym atakom DDOS.

 1
Author: matwonk,
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-01-12 16:37:00