Gibt es eine maximale Größe für die Länge einer versteckten Eingabe in HTML?

91

mit anderen Worten:

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

und wenn ja, was ist das?

Sprugman
quelle
6
Die beste Fragemethode, die ich je gesehen habe.
Andrés Morales

Antworten:

58

Dies hängt von der Methode ab, mit der Sie das Formular senden.

Bei GET gibt es eine allgemein vereinbarte Grenze von etwa 1 bis 2 Kilobyte, abhängig von den Einschränkungen des Browsers und des Servers.

Mit POST gibt es keine technische Beschränkung im Browser, aber normalerweise eine auf der Serverseite - siehe z. B. Apache LimitRequestBody, PHP post_max_sizeund so weiter.

Pekka
quelle
Beachten Sie die Probleme, auf die @naugtur unten für Texteingabefelder hinweist - zumindest für diejenigen, denen von verschiedenen Browsern technische Einschränkungen auferlegt werden.
Oliver
Ich habe gerade einige Tests mit 3 etwas aktuellen Browsern (IE9, FF 10 ESR, Chrome 24) durchgeführt und alle haben problemlos versteckte Eingabewerte von 100 KB übermittelt. Die Probleme mit Texteingaben scheinen hier also nicht zuzutreffen.
Oliver
wie wäre es mit textareas?
Francisco Corrales Morales
@FranciscoCorralesMorales es ist egal, welcher Typ das Eingabefeld ist - was zählt, ist das Endergebnis, die Summe aller Daten, die Sie senden
Pekka
Ich fand, dass Safari die versteckte Eingabe abgeschnitten hat. Die Verwendung eines Textbereichs löste das Problem.
Brendon Muir
29

Warnung! Ich habe Probleme damit, <input type="text">wenn der Text länger als 65535 ist (maximale signierte int-Größe).

Das Einfügen des Textes scheint einen seltsamen Überlauf des Inhalts zu verursachen. Im Webkit entdeckt.

[bearbeiten]

Die Größe der GET-Anfrage ist nicht genau auf die Art und Weise beschränkt, wie Pekka geschrieben hat. Es gibt ein Limit von 2083 Bytes für die gesamte GET- Abfragezeichenfolge nuraddress?params in Internet Explorer. In anderen Browsern gibt es praktisch kein Limit, da FireFox beispielsweise GET-Abfragen von über 100 KB sendet. Offensichtlich muss der Server diese zulassen.

Es wird nicht in der Dokumentation behandelt, daher muss man es testen, um die Grenzen für andere Browser zu kennen. IE: http://support.microsoft.com/kb/208427

naugtur
quelle
8
+1 Ich habe diese jsFiddle erstellt, um zu testen, was passiert, wenn Sie einen Eingabewert auf eine sehr lange Zeichenfolge setzen: jsfiddle.net/3TVPL/6 Ich habe eine Zeichenfolge mit einer Länge von 65537 Zeichen verwendet. In meinen Tests zeigen Crome 24.0.1312 und Safari 5.1.7 für Windows beide Eingabefelder als leer an, nachdem der Wert auf diese Zeichenfolge festgelegt wurde. Chrome zeigt den richtigen nicht leeren Wert an, wenn ich die Zeichenfolge auf 65536 Zeichen reduziere. Andere Browser (Firefox 17, IE8, IE9, IE10, Opera 12.12) hatten auch mit Strings keine Probleme mehr (ich stieg bis zu ungefähr 1,2 Mb String)
Beluga
@beluga tolle Arbeit. irgendwelche Gedanken zur Leistung? Auf meiner schwachen Maschine war es eine lange Wartezeit. Ich denke, deshalb rendert das Webkit das nicht.
Naugtur
Guter Punkt vielleicht. Ich habe zu diesem Zeitpunkt keine Leistungstests durchgeführt. Ich habe eine ziemlich aufgemotzte Maschine bei der Arbeit und habe in keinem der Browser eine Verzögerung bemerkt.
Beluga
Es machte meinen FF für etwa 5 Minuten unbrauchbar. So viel in ein Formularfeld zu
schreiben ist
Mobile Browser und Proxys können auch versteckte Felder abschneiden
George Filippakos