¿Cuál es el límite de tamaño de una solicitud HTTP POST?
Lo siento si esto está duplicado, creo que lo estaría, pero no pude encontrar nada.
Tengo una aplicación flexible en la que estoy publicando datos en un servidor PHP/MySQL a través de Internet Explorer. No he tenido ningún problema todavía, pero saber esto de antemano podría ahorrarme mucha frustración y trabajo. ¿Existe un límite de tamaño para publicar datos a través de HTTP?
- Este artículo dice "no":
http://www.netlobo.com/ie_form_submit.html - Esta discusión dice "sí":
http://bytes.com/topic/php/answers/538226-what-maximum-limit-using-post-method
Y todo va y viene de lo que puedo encontrar en línea. Por lo tanto , limite las respuestas a números probados/verificados personalmente.
Quiero publicar una cadena XML que puede ser bastante grande (digamos hasta 5 MB).
Si hay alguna diferencia: el navegador siempre será Internet Explorer (nuestro producto lo requiere), POST proviene de HTTPService
Flex, el servidor web es PHP, la base de datos es MySQL.
Depende de la configuración del servidor. Si estás trabajando con PHP bajo Linux o similar, puedes controlarlo usando el archivo de configuración .htaccess, así:
#set max post size
php_value post_max_size 20M
Y sí, personalmente puedo dar fe de que esto funciona :)
Si está utilizando IIS, no tengo idea de cómo establecería este valor en particular.
La parte URL de una solicitud (GET y POST) puede estar limitada tanto por el navegador como por el servidor; generalmente, el tamaño seguro es 2 KB, ya que casi no hay navegadores o servidores que utilicen un límite menor.
El cuerpo de una solicitud (POST) normalmente está limitado por el servidor en función del tamaño de bytes para evitar un tipo de ataque DoS (tenga en cuenta que esto significa que el carácter de escape puede aumentar el tamaño de bytes del cuerpo). La configuración de servidor más común es 10 MB, aunque todos los servidores populares permiten aumentar o disminuir esto a través de un archivo o panel de configuración.
1 Existen algunas excepciones con los navegadores de teléfonos móviles más antiguos u otros dispositivos pequeños; en esos casos se trata más de una función del espacio de almacenamiento dinámico reservado para este propósito en el dispositivo que de cualquier otra cosa.
Además, en el archivo PHP.INI hay una configuración:
max_input_vars
que en mi versión de PHP: 5.4.16 el valor predeterminado es 1000.
Del manual: "¿Cuántas variables de entrada se pueden aceptar (el límite se aplica a $_GET, $_POST y $_COOKIE superglobal por separado)"
Ref.: http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars
Puede publicar una gran cantidad de datos configurando la variable php.ini: max_input_vars
el tamaño predeterminado de esta variable es 1000, pero si desea enviar una gran cantidad de datos debe aumentar el tamaño en consecuencia. Si no puede establecer el tamaño desde ini_set, debe hacerlo directamente htaccess
o realizando cambios en el archivo php.ini.
max_input_vars 2500
memory_limit 256M
Como señaló David, elegiría KB en la mayoría de los casos.
php_value post_max_size 2K
Nota: mi formulario es simple, solo unos pocos cuadros de texto, no texto largo.
(La abreviatura PHP para KB es K, como se describe aquí ).