¿Puede HTTP POST ser ilimitado?

Respuestas:

75

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 solo admite 200 KB de forma predeterminada, la metabase debe modificarse para aumentar esto.

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
fuente
upvote por mencionar Metabase.XML y he enumerado varias formas de cambiar el límite de tamaño de carga de archivos porque podría ser útil.
Durai Amuthan. H
Ingresar el siguiente comando en el símbolo del sistema ayuda a aumentar el límite de tamaño de carga de archivos ". Cscript C: \ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (en bytes) referencia: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H
o busque metabase.xml en C: \ windows \ sytem32 \ inetserv \ ruta y edite, pero asegúrese de que Habilitar la edición directa de la metabase esté habilitada. Referencia
Durai Amuthan. H
o En su web.config, agregue una línea debajo de su system.web <httpRuntime executionTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H
Para los servidores web actuales (2019), consulte esta respuesta .
Dan Dascalescu
76

Es bastante sorprendente cómo todas las respuestas hablan de IIS, como si ese fuera el único servidor web que importara. Incluso en 2010, cuando se hizo la pregunta, Apache tenía entre el 60% y el 70% de la participación de mercado . De todas formas,

  • 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 varía 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 solicitud de cuerpo POST es min(serverMaximumSize, clientMaximumSize).

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

Dan Dascalescu
fuente
4
De esas respuestas que mencionan un servidor web, dos mencionan IIS y una menciona Apache. De todos modos, he editado mi respuesta para señalar la tuya, que es más completa y actualizada.
David Neale
3
¡Gracias @DavidNeale! Debería haber una insignia para eso :) Intentaré mantener actualizada esta respuesta. Acabo de agregar el máximo para nginx.
Dan Dascalescu
Acerca de esto: "más datos que el método GET, que está limitado por la longitud de la URL, aproximadamente 2 KB". ¿Qué pasa con los encabezados? Según esta publicación , parece que los encabezados permiten aproximadamente 8-16 KB.
Hans Vonn
27

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

Greg Hewgill
fuente
¿Sigue siendo 4GB el máximo para Apache? Lo encontré documentado en 2GB.
Dan Dascalescu
@DanDascalescu: No sé, no he hecho esto en mucho tiempo. Quizás empezaron a imponer un límite superior a la LimitRequestBodydirectiva.
Greg Hewgill
6

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

Creo que, básicamente, es más seguro suponer que es no está bien para enviar gran cantidad de datos.

Russ Clarke
fuente
2
¿Existe alguna regla general sobre cuánto se vuelve peligroso para los tiempos de espera y cosas así?
vextorspace
3

Diferentes servidores web IIS pueden procesar diferentes cantidades de datos en el 'encabezado', según este artículo (ahora eliminado); http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;

Tenga en cuenta que no hay límite en la cantidad de elementos FORM que puede pasar a través de POST, sino solo en el tamaño agregado de todos los pares de nombre / valor. Mientras que GET está limitado a 1024 caracteres, los datos POST están limitados a 2 MB en IIS 4.0 y 128 KB en IIS 5.0. Cada nombre / valor está limitado a 1024 caracteres, según lo impuesto por la especificación SGML. Por supuesto, esto no se aplica a los archivos cargados usando enctype = 'multipart / form-data' ... No he tenido problemas para cargar archivos en el rango de 90 a 100 MB usando IIS 5.0, además de tener que aumentar el valor server.scriptTimeout ¡así como mi paciencia!

amelvin
fuente
1
Buena edición @ Matt - muestra la importancia de cortar con tijeras a cabo los hechos más destacados en lugar de vincular a ciegas
amelvin
1

En una aplicación que estaba desarrollando, encontré lo que parecía ser un límite POST de aproximadamente 2 KB. Resultó ser que accidentalmente codificaba los parámetros en la URL en lugar de pasarlos en el cuerpo. Entonces, si tiene un problema allí, definitivamente hay un límite muy pequeño en el tamaño de los datos POST que puede enviar codificados en la URL.

Brycejl
fuente
0

HTTP puede no tener un límite superior, pero los servidores web pueden tener uno. En ASP.NET hay un límite de aceptación predeterminado de 4 MB, pero usted (el desarrollador / webmaster) puede cambiarlo para que sea más alto o más bajo.

Hans Ke st ing
fuente