¿Puede HTTP POST ser ilimitado?
¿Cuál es la especificación para el tamaño máximo de datos que se puede enviar con el método HTTP POST?
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
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.
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.
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.