Porównaj ceny domen i usług IT, sprzedawców z całego świata

Błąd HTTP 414. Żądanie adresu URL jest za długie. asp.net


Pojawia się błąd „Błąd HTTP 414. URL żądania jest za długi”. z poniższego artykułu rozumiem, że ma to związek z bardzo długim ciągiem zapytania:
http://www.mytecbits.com/Micro ... -long
http://www.mytecbits.com/micro ... -long
  • W web.config mam
    maxQueryStringLength = "2097151"
    . Czy to jest maksymalna wartość
  • Aby rozwiązać ten problem, czy powinienem ustawić
    maxUrl
    w web.config Jeśli tak, jaka jest maksymalna obsługiwana wartość

Co mam zrobić, aby naprawić ten błąd?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ten błąd jest faktycznie wyrzucany z

http.sys
http://www.iis.net/learn/get-s ... rtext
a nie z IIS. Błąd występuje przed przesłaniem żądania do usług IIS w potoku żądania.

Aby wymusić na https.sys, aby akceptował dłuższe adresy URL żądań bez błędu HTTP 414, w rejestrze systemu Windows na komputerze serwera, w folderze Komputer \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP \ Parameters, utwórz wartość DWORD o nazwie MaxFieldLength i wystarczająco dużą wartość , na przykład 65535.

Jeśli zdecydujesz się wprowadzić tę zmianę, oczywiście należy to zrobić we wszystkich środowiskach (w tym na wszystkich serwerach produkcyjnych), a nie tylko na lokalnym komputerze deweloperskim.
Ponadto wszelkie skrypty i/lub dokumentacja używane przez zespół do konfigurowania nowych instancji serwera powinny zostać zaktualizowane w celu uwzględnienia tego ustawienia rejestru, aby zespół nie zapomniał zastosować tego ustawienia po 18 miesiącach podczas konfigurowania nowego serwera produkcyjnego.
Na koniec należy pamiętać, że wprowadzenie tej zmiany może mieć niekorzystny wpływ na bezpieczeństwo wszystkich aplikacji działających na serwerze, ponieważ duże żądanie HTTP wysłane przez osobę atakującą nie zostanie odrzucone na wczesnym etapie potoku, jak normalnie miałoby to miejsce.
Alternatywnie do wprowadzenia tej zmiany w celu ominięcia zabezpieczeń http.sys, rozważ zmianę żądania tak, aby akceptowało HTTP POST zamiast HTTP GET i umieść parametry w treści żądania POST zamiast długiego adresu URL. Więcej informacji na ten temat znajdziesz w

Projekt pytania RESTful GET API z długą listą parametrów żądania
https://coderoad.ru/14202257/
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jak opisano w tej odpowiedzi - & >

jaka jest maksymalna długość adresu URL w różnych przeglądarkach?
https://coderoad.ru/417142/
Dozwolona długość adresu URL zależy od kombinacji przeglądarki i serwera. Dlatego trudno jest dokładnie określić, jak długi może być adres URL. W odpowiedzi zaleca się pozostawienie adresu URL poniżej 2000 znaków. Nie wiem, dlaczego ciąg zapytania jest tak długi. Czy możesz to skrócić? Trudno jest udzielić żadnych wskazówek, nie wiedząc więcej o rozwiązaniu i ciągu zapytania.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zazwyczaj adres URL ma własne ograniczenia długości i jeśli ustawisz tę wartość, możesz na chwilę rozwiązać problem, ale pamiętaj, że w przypadku długich adresów URL najlepiej jest pracować z formularzami. Aby być precyzyjnym, lepiej jest używać akcji POST zamiast Get.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

tylko dodatkowo, jeśli spróbujesz z ogromnymi parametrami przy użyciu żądania AJAX i otrzymasz 414 ERROR. zmień właściwość dataType na JSON, a następnie wyślij jako typ POST.
Rozwiązał mój problem.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się