tipos services funciona elementos como web-services http

web-services - services - web service php



longitud máxima de la solicitud HTTP GET? (7)

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

¿Cuál es la longitud máxima de una solicitud HTTP GET? ¿Existe un error de respuesta definido que el servidor pueda / deba devolver si recibe una solicitud GET que exceda esta longitud?

actualización: como se indica en las etiquetas, 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 servidor proxy o del servidor).

La mayoría de los servidores web tienen un límite de 8192 bytes (8KB), que generalmente es configurable 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 al depender de longitudes de URI de más de 255 bytes, ya que algunas implementaciones de proxy o cliente más antiguas podrían no ser compatibles con estas longitudes.

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

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, entonces use mejor 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 promedio permite hasta alrededor de 2 GB. Esto también es configurable en algún lugar en 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 error HTTP 500.


Estás haciendo dos preguntas separadas aquí:

¿Cuál es la longitud máxima de una solicitud HTTP GET?

Como ya se mencionó, el propio HTTP no impone ningún límite codificado en la longitud de la solicitud; pero los navegadores tienen límites que van de 2kb a 8kb (255 bytes si contamos con navegadores muy antiguos ).

¿Existe un error de respuesta definido que el servidor pueda / deba devolver si recibe una solicitud GET que exceda esta longitud?

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. Puedes ver más detalles en RFC 2616 .

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

Espero que esto ayude.


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.


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 200 OK esperada.

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

RESPUESTA