¿Puede HTTP POST ser ilimitado?

Resuelto IAdapter asked hace 14 años • 7 respuestas

¿Cuál es la especificación para el tamaño máximo de datos que se puede enviar con el método HTTP POST?

IAdapter avatar May 21 '10 15:05 IAdapter
Aceptado

Es bastante sorprendente cómo todas las respuestas hablan de IIS, como si fuera el único servidor web que importara. Incluso allá por 2010, cuando se formuló la pregunta, Apache tenía entre el 60% y el 70% de la cuota de mercado . De todos modos,

  • El protocolo HTTP no especifica un límite.
  • El método POST permite enviar muchos más datos que el método GET, que está limitado por la longitud de la URL : aproximadamente 2 KB.
  • El tamaño máximo del cuerpo de la solicitud POST se configura en el servidor HTTP y normalmente oscila entre
    1 MB y 2 GB.
  • El cliente HTTP (navegador u otro agente de usuario) puede tener sus propias limitaciones. Por lo tanto, el tamaño máximo de la solicitud del cuerpo POST es min(serverMaximumSize, clientMaximumSize).

Estos son los tamaños de cuerpo POST para algunos de los servidores HTTP más populares:

  • Nginx ( mayor cuota de mercado de servidores web a partir de abril de 2019): 1 MB predeterminado , sin máximo práctico ( 2**63 )
  • Apache: máximo 2 GB , sin valores predeterminados documentados
  • IIS: valor predeterminado de 28,6 MB para la longitud de la solicitud, 2048 bytes para la cadena de consulta; máximo indocumentados
  • InfluxDB: valor predeterminado ~25 MB , máximo no documentado
Dan Dascalescu avatar May 06 '2019 02:05 Dan Dascalescu

EDITAR (2019) Esta respuesta ahora es bastante redundante, pero hay otra respuesta con información más relevante.

Más bien depende del servidor web y del navegador web:

Internet Explorer Todas las versiones 2GB-1
Mozilla Firefox Todas las versiones 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1

Aunque IIS sólo admite 200 KB de forma predeterminada, es necesario modificar la metabase para aumentarlo.

http://www.motobit.com/help/scptutl/pa98.htm

El método POST en sí no tiene ningún límite en el tamaño de los datos.

David Neale avatar May 21 '2010 09:05 David Neale

No hay límite según el protocolo HTTP en sí, pero las implementaciones tendrán un límite superior práctico. Envié datos que superaban los 4 GB mediante POST a Apache, pero algunos servidores tenían un límite de 4 GB en ese momento.

Greg Hewgill avatar May 21 '2010 09:05 Greg Hewgill

POST permite enviar una longitud arbitraria de datos a un servidor, pero existen limitaciones basadas en tiempos de espera/ancho de banda, etc.

Básicamente, creo que es más seguro asumir que no está bien enviar muchos datos.

Russ Clarke avatar May 21 '2010 09:05 Russ Clarke