Frage

Gibt es ein dokumentiertes max auf die Länge der Zeichenfolge Daten, die Sie im Sendeverfahren eines XMLHttpRequest für die wichtigsten Browser-Implementierungen verwenden kann?

Ich laufe in ein Problem mit einer JavaScript XMLHttpRequest Post 3 in FireFox versagt, wenn die Daten über ca. 3k. Ich war der Annahme, die Post das gleiche wie eine herkömmliche Formularübermittlung verhalten würde.

Die W3C-Dokumente erwähnen die Daten param des Sendemethode ein DOMString ist, aber ich bin nicht sicher, wie die gängigen Browsern, dass implementieren.

Hier ist eine vereinfachte Version meiner JavaScript, wenn bigText ist über etwa 3k es nicht, sonst funktioniert es ...

var xhReq = createXMLHttpRequest();

function createXMLHttpRequest() {
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  try { return new XMLHttpRequest(); } catch(e) {}
  alert("XMLHttpRequest not supported");
  return null;
}

function mySubmit(id, bigText) {
  var url    = "SubmitPost.cfm";
  var params = "id=" + id + "&bigtext=" + encodeURI(bigText);

  xhReq.open("POST", url, true);

  //Send the header information along with the request
  xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhReq.setRequestHeader("Content-length", params.length);
  xhReq.setRequestHeader("Connection", "close");

  xhReq.onreadystatechange = onPostSubmit;
  xhReq.send(params);
}

function onPostSubmit() {

  if (xhReq.readyState==4 || xhReq.readyState=="complete")
     { 
     if (xhReq.status != 200)
        {
        alert('BadStatus');
        return;
        }
    } 
}
War es hilfreich?

Lösung

ich glaube, die maximale Länge auf dem Browser nicht nur ab, sondern auch auf dem Webserver. Zum Beispiel hat der Apache HTTP-Server eine Limitrequestbody Richtlinie , die erlaubt überall von 0 Byte bis 2 GB im wert von Daten.

Andere Tipps

Nach dem XMLRPC spec rel="nofollow, sind die einzigen wirklichen Grenzen für die Größe von ganzen Zahlen und Doppelzimmer.

Sie geben nicht, wie es ausfällt jedoch Ihre Codierung falsch ist. Sie sollten verwenden encodeURIComponent nicht encodeURI.

Standard die maximale Größe des Anforderungs Entitätskörpers auf dem Client wahrscheinlich nur durch den verfügbaren Speicher begrenzt. Der Server wie bereits darauf hingewiesen worden, kann Einheit Körper über eine bestimmte Größe ablehnen. IIS 6 und 7 zum Beispiel ein 200 KB Standardlimit haben.

Die Konfiguration für Nginx muss an der client_max_body_size und getan werden ca auf einem beliebigen Wert dh 20m für 20MiB oder auf 0 gesetzt werden, um sie zu deaktivieren.

vim /etc/nginx/nginx.conf

Speicher und schließen Sie die Datei, die Änderungen gelten für nginx.conf, dann testen -t und und Signal sendet es neu zu laden:

/usr/sbin/nginx -t
/usr/sbin/nginx -s reload

Syntax: client_max_body_size Größe;

Standard: client_max_body_size 1m;

Kontext: http, Server, Standort

Setzt die maximal zulässige Größe des Client-Anfrage Körpers, angegeben in dem „Content-Length“ Request-Header-Feld. Wenn die Größe in einer Anforderung den parametrierten Wert überschreitet, die 413 (Request Entity zu groß) Fehler wird an den Client zurückgegeben. Bitte beachten Sie, dass Browser nicht korrekt diesen Fehler anzuzeigen. Einstellung Größe 0 deaktiviert die Funktion der Client-Anfrage Körpergröße zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top