la 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 / debería devolver si recibe una solicitud GET que excede esta longitud?

actualización: como se indica en las tags, esto se encuentra 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 usa el servidor o el cliente).

La mayoría de los servidores web tienen un límite de 8192 bytes (8KB), que generalmente se puede configurar en algún lugar de la configuración del servidor. En cuanto a la cuestión del lado del cliente, la especificación HTTP 1.1 incluso advierte sobre esto, aquí hay un extracto del capítulo 3.2.1 :

Nota: Los servidores deben tener cuidado de no depender de longitudes de URI superiores a 255 bytes, ya que es posible que algunas implementaciones de clientes o proxy anteriores no sean compatibles con estas longitudes.

El límite está en MSIE y Safari alrededor de 2KB, en Opera alrededor de 4KB y en Firefox alrededor de 8KB. Por lo tanto, podemos suponer que 8 KB es la longitud máxima posible y que 2 KB es una longitud más asequible de la que depender en el servidor y 255 bytes es la longitud más segura para suponer que entrará toda la URL.

Si se excede el límite en el navegador o el servidor, la mayoría simplemente truncarán los caracteres fuera del límite sin previo aviso. Sin embargo, algunos servidores pueden enviar un error HTTP 414 . Si necesita enviar datos de gran tamaño, mejor utilice POST en lugar de GET. Su límite es mucho más alto, pero depende más del servidor utilizado que el cliente. Por lo general, el servidor web promedio permite hasta alrededor de 2 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ífica del servidor cuando se excede el límite POST, generalmente como 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 por sí mismo no impone ningún límite codificado en la longitud de la solicitud; pero los navegadores tienen límites que oscilan entre los 2kb y los 8kb (255 bytes si contamos navegadores muy antiguos ).

¿Hay un error de respuesta definido que el servidor puede / debería devolver si recibe una solicitud GET que excede esta longitud?

Ese es el que nadie ha respondido.

El HTTP 1.1 define el 414 Request-URI Too Long código de estado 414 Request-URI Too Long para los casos en que se alcanza un límite definido por el servidor. Puede ver más detalles sobre RFC 2616 .

Para el caso de límites definidos por el cliente, no tiene sentido que el servidor devuelva algo, porque el servidor no recibirá la solicitud en absoluto.

Espero que esto ayude.

Pregunta similar aquí: ¿hay un límite en la duración de una solicitud GET?

Llegué al límite y en mi cuenta de alojamiento compartido, pero el navegador devolvió una página en blanco antes de que llegara al servidor, creo.

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 IE11 2047 5120 Edge 16 2047 10240 

¿quieren más? vea esta pregunta en Stack Overfollow

Técnicamente, he visto que HttpGet tendrá problemas si la longitud de la URL supera los 2000 caracteres. En ese caso, es mejor usar HttpPost o dividir la URL.

Como ya se mencionó, HTTP por sí mismo no impone ningún límite codificado en la longitud de la solicitud; pero los navegadores tienen límites que van del 2048 caracteres permitidos en el método get.

OBTENER SOLICITUD usando el navegador Chrome Sí. No hay límite en la solicitud GET.

 I am able to send ~4000 characters as part of the query string using chrome browser & curl command both. 

Estoy usando el servidor Tomcat 8.x que ha devuelto la respuesta esperada 200 OK.

Aquí está la captura de pantalla de Chrome http request (que oculta el punto final que probé por razones de seguridad):

RESPUESTA GET usando el navegador Chrome