2008-11-05 15 views
138

¿Existe un límite en la duración de una solicitud GET?¿Hay un límite en la duración de una solicitud GET?

+7

véase también [la longitud máxima de la solicitud HTTP GET?] (Http://stackoverflow.com/questions/2659952/supplement-length-of-http-get-request) – Bergi

+1

Esta pregunta se cerró sobre la base de que existe una pregunta similar en SO, pero la otra pregunta fue hecha 2 años después. Por lo tanto, esto no puede ser un duplicado. – user902383

Respuesta

74

No en el RFC, no, pero existen límites prácticos.

El protocolo HTTP no pone ningún límite a priori en la longitud de URI. Los servidores DEBEN ser capaces de manejar el URI de cualquier recurso que sirva, y DEBERÍAN ser capaces de manejar URI de longitud ilimitada si proporcionan formularios basados ​​en GET que podrían generar tales URI. Un servidor DEBE devolver el estado 414 (Request-URI Too Long) si un URI es más largo que el servidor puede manejar (ver sección 10.4.15).

Nota: Los servidores deben tener cuidado en función de las longitudes URI superiores a 255 bytes, debido a que algunos de los clientes de proxy o mayores implementaciones pueden no soportar adecuadamente estas longitudes.

+0

HTTPbis agrega un poco a esto: "Varias limitaciones ad-hoc en la longitud del objetivo de solicitud se encuentran en la práctica. Se RECOMIENDA que todos los remitentes y destinatarios HTTP admitan longitudes de objetivo de solicitud de 8000 o más octetos". http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-17#section-3.1.1.2 –

52

This article lo resume bastante bien

Resumen: Es dependiente de la implementación, ya que no hay límite especificado en el RFC. Sería seguro usar hasta 2000 caracteres (límite de IE). Si estás cerca de esta longitud, debes asegurarte de que realmente necesitas URI durante tanto tiempo, tal vez un diseño alternativo podría evitarlo.

Los URI deben ser legibles, incluso cuando se utilizan para enviar datos.

+11

Buen registro, pero la legibilidad URI no tiene nada que ver con GET vs POST. El objetivo es definir una API RESTful para la web que diferencie entre las diferencias funcionales de los tipos de solicitud. Las solicitudes HTTP GET tienden a ser legibles por el usuario para hipervínculos, pero ese no es su propósito, solo un uso. http: //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html # sec9.3 – DougW

+3

El propósito de los URI no es definir una API RESTful para la web. En absoluto. http://www.w3.org/Provider/Style/URI.html –

+2

Correcto. El propósito de GET & POST sin embargo, es. La pregunta es preguntar acerca de las solicitudes HTTP GET. Estás asumiendo que quiere decir hipervínculos encontrados en un sitio web, destinados a la legibilidad humana. Ese es un uso particular de GET HTTP, pero lejos del único. – DougW

16

La especificación no limita la longitud de una solicitud HTTP Get, pero los diferentes navegadores implementan sus propias limitaciones. Por ejemplo, Internet Explorer tiene una limitación implementada en 2083 caracteres.

+1

Gracias por su valor exacto => +1. Sin embargo, ¿cuál es la versión específica de IE? Mi IE8 no acepta más de 2048 caracteres en la barra de direcciones (cuadro de entrada de URL). Pero mi código JavaScript puede enviar XMLHttpRequest GET usando 3586 caracteres (no realicé más pruebas). Por lo tanto, ¿dónde has encontrado 2083? Aclamaciones. – olibre

+9

He hecho algunas pruebas más con IE8, IE9, FF14, Opera11, Chrome20 y Tomcat 6.0.32 (instalación nueva), Jersey 1.13 en el lado del servidor. Usé la función jQuery $ .getJson y JSONP. Resultados: todos los navegadores permitieron hasta alrededor de 5400 caracteres. FF e IE9 hicieron hasta alrededor de 6200 caracteres. Todo lo anterior arrojó "400 solicitud incorrecta". No investigué más sobre qué era responsable de los 400. Estaba bien con el máximo que encontré, porque necesitaba alrededor de 2000 caracteres en mi caso. – OneWorld

+0

Este artículo de MS KB indica que el límite de URL de IE8 (y anterior) para las URL GET y POST es 2083 caracteres: http://support.microsoft.com/kb/208427 –

11

W3C inequívocamente negó este como un mito aquí

http://www.w3.org/2001/tag/doc/get7#myths

+1

Se trata de un mito de un límite específico de 256 caracteres, y hay un límite demostrable en IE. –

+1

El enlace es reemplazado por http://www.w3.org/2001/tag/doc/whenToUseGet-20030922#ephemeral (que dice lo mismo) –

+0

@ JonasKölker le € 33 # SDay s – OneWorld

0

setFixedLengthStreamingMode (int) con los parámetros ContentLength podría establecer la longitud fija de un cuerpo de la solicitud HTTP.

+0

Parece ser el único respuesta que en realidad es relevante.Los demás tratan sobre la longitud de las URL, lo que no aparece en la pregunta. – EJP

16

a lo solicitado por usuario Erickson, fijo mi comentario Como respuesta:

he hecho algunas pruebas más con IE8, IE9, FF14, Opera11, Chrome20 y Tomcat 6.0.32 (instalación nueva), en Jersey 1.13 el lado del servidor. Usé la función jQuery $ .getJson y JSONP. Resultados: todos los navegadores permitieron hasta alrededor de 5400 caracteres. FF e IE9 hicieron hasta alrededor de 6200 caracteres. Todo lo anterior arrojó "400 solicitud incorrecta". No investigué más sobre qué era responsable de los 400. Estaba bien con el máximo que encontré, porque necesitaba alrededor de 2000 caracteres en mi caso.

Cuestiones relacionadas