2008-09-24 14 views
8

¿Hay un máximo documentado de la longitud de los datos de cadena que puede utilizar en el método de envío de XMLHttpRequest para las principales implementaciones de navegador?Longitud máxima del parámetro de datos send() en XMLHttpRequest Publicación

Tengo un problema con JavaScript XMLHttpRequest Publicar un error en FireFox 3 cuando los datos son más de aproximadamente 3k. Asumía que el Post se comportaría de la misma forma que un Post de forma convencional.

Los documentos W3C mencionan que el parámetro de datos del método de envío es un DOMString, pero no estoy seguro de cómo lo implementan los principales navegadores.

Aquí es una versión simplificada de mi JavaScript, si es bigText lo largo de aproximadamente 3k se produce un error, si no funciona ...

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; 
     } 
    } 
} 

Respuesta

5

creo que la longitud máxima no depende sólo del navegador, sino también en el servidor web. Por ejemplo, el servidor HTTP de Apache tiene un LimitRequestBody directive que permite desde 0 hasta 2 GB de datos.

2

De acuerdo con XMLRPC spec, los únicos límites reales están en el tamaño de los números enteros y dobles.

2

No especifica cómo falla pero su codificación es incorrecta. Debería usar encodeURIComponent no encodeURI.

Por defecto, el tamaño máximo del cuerpo de la entidad de solicitud en el cliente probablemente solo esté limitado por la memoria disponible. El servidor como ya se ha señalado puede rechazar cuerpos de entidad de un cierto tamaño. IIS 6 y 7, por ejemplo, tienen un límite predeterminado de 200 KB.

Cuestiones relacionadas