Pregunta

¿Es dependiente del navegador? Además, ¿las diferentes pilas web tienen límites diferentes sobre la cantidad de datos que pueden obtener de la solicitud?

¿Fue útil?

Solución

RFC 2616 (Protocolo de transferencia de hipertexto - HTTP / 1.1) indica que no hay límite para la longitud de una cadena de consulta (sección 3.2.1). RFC 3986 también indica que no hay límite, pero indica que el nombre de host está limitado a 255 caracteres debido a DNS limitaciones (sección 2.3.3).

Si bien las especificaciones no especifican ninguna longitud máxima, el navegador web y el software del servidor imponen límites prácticos. Basado en la investigación encontrada en Boutell.com :

  • Microsoft Internet Explorer (navegador)
    Microsoft afirma que la longitud máxima de una URL en Internet Explorer es 2.083 caracteres, con no más de 2.048 caracteres en la parte de la ruta de la URL. Los intentos de usar direcciones URL más largas que esto produjeron un mensaje de error claro en Internet Explorer.

  • Microsoft Edge (navegador)
    El límite parece ser alrededor de 81578 caracteres. Consulte Límite de longitud de URL de Microsoft Edge

  • Chrome
    Deja de mostrar la URL después de 64k caracteres, pero puede servir más de 100k caracteres. No se realizaron más pruebas más allá de eso.

  • Firefox (navegador)
    Después de 65,536 caracteres, la barra de ubicación ya no muestra la URL en Windows Firefox 1.5.x. Sin embargo, las URL más largas funcionarán. No se realizaron más pruebas después de 100.000 caracteres.

  • Safari (navegador)
    Al menos 80.000 caracteres funcionarán. Las pruebas no se intentaron más allá de eso.

  • Opera (navegador)
    Al menos 190.000 caracteres funcionarán. Dejó de probar después de 190.000 caracteres. Opera 9 para Windows continuó mostrando una versión completamente editable, URL copiable y pegable en la barra de ubicación, incluso con 190.000 caracteres.

  • Apache (servidor)
    Los primeros intentos de medir la longitud máxima de la URL en los navegadores web se toparon con un límite de longitud de la URL del servidor de aproximadamente 4.000 caracteres, después de lo cual Apache produce una "entidad 1313 demasiado grande" error. Se utilizó la compilación actual de Apache actualizada en Red Hat Enterprise Linux 4. La documentación oficial de Apache solo menciona un límite de 8.192 bytes en un campo individual en una solicitud.

  • Microsoft Internet Information Server (servidor)
    El límite predeterminado es 16,384 caracteres (sí, el servidor web de Microsoft acepta URL más largas que el navegador web de Microsoft). Esto es configurable.

  • Perl HTTP :: Daemon (Servidor)
    Hasta 8,000 bytes funcionarán. Aquellos que construyen servidores de aplicaciones web con el módulo HTTP :: Daemon de Perl encontrarán un límite de 16,384 bytes en el tamaño combinado de todos los encabezados de solicitud HTTP. Esto no incluye los datos del formulario del método POST, las cargas de archivos, etc., pero sí incluye la URL. En la práctica, esto resultó en un error 413 cuando una URL era significativamente más larga que 8,000 caracteres. Esta limitación se puede eliminar fácilmente. Busque todas las ocurrencias de 16x1024 en Daemon.pm y reemplácelas por un valor mayor. Por supuesto, esto aumenta su exposición a los ataques de denegación de servicio.

Otros consejos

Aunque oficialmente no hay límite, muchas recomendaciones de configuración de seguridad establecen que maxQueryStrings en un servidor debe establecerse en un límite de caracteres máximo de 1024, mientras que la url completa, incluida la cadena de consulta, debe establecerse en un máximo de 2048 caracteres. Esto es para evitar la vulnerabilidad de Solicitud HTTP lenta en un servidor web para evitar ataques DDOS lentos que aparecen en el Escáner de aplicaciones web de Qualys y otros escáneres de seguridad.

Consulte el siguiente código para los servidores Windows IIS con Web.config:

<security>
    <requestFiltering>
        <requestLimits maxQueryString="1024" maxUrl="2048">
           <headerLimits>
              <add header="Content-type" sizeLimit="100" />
           </headerLimits>
        </requestLimits>
     </requestFiltering>
</security>

Diferentes pilas web admiten diferentes longitudes de solicitudes http. Sé por experiencia que las primeras pilas de Safari solo admitían 4000 caracteres y, por lo tanto, tenían dificultades para manejar las páginas ASP.net debido al USUARIO. Esto es incluso para POST, por lo que tendría que revisar el navegador y ver cuál es el límite de pila. Creo que puedes llegar a un límite incluso en los navegadores más nuevos. No puedo recordar, pero uno de ellos (IE6, creo) tenía un límite de límite de 16 bits, 32,768 o algo así.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top