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?
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 EdgeChrome
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.
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.
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ś.
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.
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