¿Cuál es la longitud máxima de una solicitud HTTP GET ?
¿Se ha definido un error de respuesta que el servidor puede / debería devolver si recibe una solicitud GET que excede esta longitud?
Esto está en el contexto de una API de servicio web, aunque también es interesante ver los límites del navegador.
web-services
http
Mark Harrison
fuente
fuente
Respuestas:
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 web tienen un límite de 8192 bytes (8 KB), que generalmente se puede configurar en algún lugar de la configuración del servidor. En cuanto al asunto del lado del cliente, la especificación HTTP 1.1 incluso advierte sobre esto. Aquí hay un extracto del capítulo 3.2.1 :
El límite en Internet Explorer y Safari es de aproximadamente 2 KB, en Opera de aproximadamente 4 KB y en Firefox de aproximadamente 8 KB. Por lo tanto, podemos suponer que 8 KB es la longitud máxima posible y que 2 KB es una longitud más asequible para confiar en el lado del servidor y que 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 en el servidor, la mayoría simplemente truncará los caracteres fuera del límite sin ninguna advertencia. Sin embargo, algunos servidores pueden enviar un error HTTP 414 . Si necesita enviar datos grandes, mejor use POST en lugar de GET. Su límite es mucho más alto, pero depende más del servidor utilizado que del 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ífico del servidor cuando se exceda el límite POST, generalmente como un error HTTP 500.
fuente
Estás haciendo dos preguntas separadas aquí:
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 oscilan entre 2 KB y 8 KB (255 bytes si contamos los navegadores muy antiguos ).
Ese es el que nadie ha respondido.
HTTP 1.1 define el 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 los límites definidos por el cliente, no tiene sentido que el servidor devuelva algo, porque el servidor no recibirá la solicitud en absoluto.
fuente
Los límites del navegador son:
¿Quieren más? Vea esta pregunta en Desbordamiento de pila .
fuente
Aquí hay una pregunta similar: ¿hay 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.
fuente
Técnicamente, he visto que HTTP GET tendrá problemas si la longitud de la URL supera los 2000 caracteres. En ese caso, es mejor usar HTTP POST o dividir la URL.
fuente
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 varían en el carácter 2048 permitido en el método GET.
fuente
Si. No hay ningún límite en una solicitud GET.
Puedo enviar ~ 4000 caracteres como parte de la cadena de consulta utilizando el navegador Chrome y el comando curl.
Estoy usando el servidor Tomcat 8.x que ha devuelto la respuesta 200 OK esperada.
Aquí está la captura de pantalla de una solicitud HTTP de Google Chrome (ocultando el punto final que probé por razones de seguridad):
RESPUESTA
fuente