Longitud máxima de la solicitud HTTP GET
¿ Cuál es la longitud máxima de una solicitud HTTP GET ?
¿Hay un error de respuesta definido que el servidor puede/debe devolver si recibe una solicitud GET que excede esta longitud?
Esto es en el contexto de una API de servicio web, aunque también es interesante ver los límites del navegador.
El límite depende tanto del servidor como del cliente utilizado (y, si corresponde, también del proxy que utiliza el servidor o el cliente).
La mayoría de los servidores y clientes tienen un límite de 8192 bytes (8 KB), que normalmente se puede configurar en algún lugar de la configuración del servidor o del cliente. La especificación HTTP recomienda 8000 octetos en la sección 4.1 :
Se RECOMIENDA que todos los remitentes y destinatarios admitan, como mínimo, URI con longitudes de 8000 octetos en elementos de protocolo. Tenga en cuenta que esto implica que algunas estructuras y representaciones en línea (por ejemplo, la línea de solicitud en HTTP/1.1) serán necesariamente más grandes en algunos casos.
Pero esto, por tanto, no es necesario. El límite es generalmente más bajo en clientes mayores. Por ejemplo, Internet Explorer tenía un límite de aproximadamente 2 KB. La versión anterior de la especificación HTTP incluso establece literalmente lo siguiente:
Nota: los servidores deben tener cuidado al depender de longitudes de URI superiores a 255 bytes, porque es posible que algunas implementaciones de clientes o proxy más antiguas no admitan adecuadamente estas longitudes.
Si se excede el límite en el navegador o en el servidor, la mayoría simplemente truncará los caracteres fuera del límite sin previo aviso. Sin embargo, algunos servidores pueden enviar un error HTTP 414 'URI demasiado largo' .
Si necesita enviar datos de gran tamaño, es mejor utilizar POST en lugar de GET. Su límite es mucho mayor, pero depende más del servidor utilizado que del cliente. Por lo general, el servidor web medio permite hasta unos 4 GB. Esto también se puede configurar en algún lugar de la configuración del servidor. El servidor promedio mostrará un error/excepción específico del servidor cuando se exceda el límite POST, generalmente como un error HTTP 500.
Usted está haciendo dos preguntas separadas aquí:
¿Cuál es la longitud máxima de una solicitud HTTP GET?
Como ya se mencionó, HTTP en sí no impone ningún límite codificado en la longitud de la solicitud; pero los navegadores tienen límites que van de 2 KB a 8 KB (255 bytes si contamos los navegadores muy antiguos ).
¿Hay un error de respuesta definido que el servidor puede/debe devolver si recibe una solicitud GET que excede esta longitud?
Esa es la que nadie ha respondido.
HTTP 1.1 define el código de estado 414 Request-URI Too Long
para los casos en los que se alcanza un límite definido por el servidor. Puedes ver más detalles en RFC 2616 .
Para el caso de límites definidos por el cliente, no tiene ningún sentido que el servidor devuelva algo, porque el servidor no recibirá la solicitud en absoluto.
Los límites del navegador son:
Browser Address bar document.location
or anchor tag
---------------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
Internet Explorer 11 2047 5120
Edge 16 2047 10240
¿Quieren más? Vea esta pregunta en Stack Overflow .
Aquí hay una pregunta similar: ¿Existe un límite para la duración de una solicitud GET?
Llegué al límite y en mi cuenta de alojamiento compartido, pero creo que el navegador devolvió una página en blanco antes de llegar al servidor.