czy istnieje maksymalny rozmiar długości ukrytych danych wejściowych w html?


92

innymi słowy:

<input type="hidden" value="Can I put as much as I want in here, or is there a limit?" />

a jeśli tak, to co to jest?


6
Najlepsza metoda zadawania pytań, jaką kiedykolwiek widziałem.
Andrés Morales

Odpowiedzi:


59

Zależy to od metody wysłania formularza.

W przypadku GET istnieje powszechnie uzgodniony limit około 1-2 kilobajtów, w zależności od ograniczeń przeglądarki i serwera.

W przypadku POST nie ma ograniczeń technicznych w przeglądarce, ale zwykle po stronie serwera - patrz np. Apache LimitRequestBody, PHP post_max_sizei tak dalej.


Uważaj na problemy wskazane przez @naugtur poniżej dla pól wprowadzania tekstu - przynajmniej w przypadku tych, istnieją ograniczenia techniczne narzucone przez różne przeglądarki.
Oliver

Właśnie przeprowadziłem testy na 3 nieco aktualnych przeglądarkach (IE9, FF 10 ESR, Chrome 24) i wszystkie bez problemu przesłały ukryte wartości wejściowe 100 KB. Więc problemy z wprowadzaniem tekstu wydają się nie mieć tutaj zastosowania.
Oliver

textareaa co z s?
Francisco Corrales Morales,

@FranciscoCorralesMorales nie ma znaczenia, jakiego typu jest pole wejściowe - liczy się wynik końcowy, suma wszystkich wysyłanych danych
Pekka

Okazało się, że Safari obcięło ukryte dane wejściowe. Użycie pola tekstowego rozwiązało problem.
Brendon Muir,

29

Ostrzeżenie! Mam problemy z <input type="text">tekstem dłuższym niż 65535 (maksymalny rozmiar int ze znakiem)

Wydaje się, że wklejenie tekstu powoduje dziwne przepełnienie treści. Zauważono w pakiecie internetowym.

[edytować]

Rozmiar żądania GET nie jest dokładnie ograniczony tak, jak napisał Pekka. Cały ciąg zapytania GET jest ograniczony do 2083 bajtów tylkoaddress?params w przeglądarce Internet Explorer. W innych przeglądarkach praktycznie nie ma ograniczeń, na przykład FireFox wysyła zapytania GET o wielkości ponad 100 KB. Oczywiście serwer musi na to zezwolić.

Nie jest to opisane w dokumentacji, więc trzeba to przetestować, aby poznać ograniczenia dla innych przeglądarek. IE: http://support.microsoft.com/kb/208427


8
+1 Stworzyłem ten jsFiddle, aby sprawdzić, co się stanie, gdy ustawisz wartość wejściową na bardzo długi ciąg: jsfiddle.net/3TVPL/6 Użyłem łańcucha o długości 65537 znaków. W moich testach Crome 24.0.1312 i Safari 5.1.7 dla Windows oba pokazują pola wejściowe jako puste po ustawieniu wartości na ten ciąg. Chrome pokazuje właściwą niepustą wartość, jeśli zredukuję ciąg do 65536 znaków. Inne przeglądarki (Firefox 17, IE8, IE9, IE10, Opera 12.12) nie miały już dużo problemów nawet ze stringami (awansowałem do około 1,2 Mb string)
beluga

@beluga świetna robota. jakieś przemyślenia na temat wydajności? Na mojej słabej maszynie trzeba było długo czekać. Myślę, że dlatego webkit tego nie renderuje.
naugtur

Może dobra uwaga. W tym czasie nie przeprowadzałem żadnych testów wydajności. Mam w pracy dość wypasioną maszynę i nie zauważyłem żadnych opóźnień w żadnej z przeglądarek.
beluga

To sprawiło, że mój FF był bezużyteczny przez około 5 minut. Umieszczanie tego w polu formularza i tak nie jest dobrym pomysłem :)
naugtur

Mobilne przeglądarki i serwery proxy mogą również obcinać ukryte pola
George Filippakos
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.