Ouvi dizer que o HTTP POST não tem limite de especificação no tamanho dos dados pelo qual pode ser enviado. Isso é verdade ou existe apenas algum limite muito alto?
Respostas:
EDIT (2019) Esta resposta agora é bastante redundante, mas há outra resposta com informações mais relevantes.
Em vez disso, depende do servidor e do navegador da web:
Internet explorer Todas as versões 2GB-1
Mozilla Firefox Todas as versões 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1
Embora o IIS suporte apenas 200 KB por padrão, a metabase precisa de alterações para aumentar isso.
http://www.motobit.com/help/scptutl/pa98.htm
O próprio método POST não tem nenhum limite no tamanho dos dados.
É incrível como todas as respostas falam sobre IIS, como se esse fosse o único servidor web que importasse. Já em 2010, quando a pergunta foi feita, o Apache tinha entre 60% e 70% da participação de mercado . De qualquer forma,
min(serverMaximumSize, clientMaximumSize)
.Aqui estão os tamanhos do corpo do POST para alguns dos servidores HTTP mais populares:
Não há limite de acordo com o próprio protocolo HTTP, mas as implementações terão um limite superior prático. Enviei dados excedendo 4 GB usando POST para o Apache, mas alguns servidores tinham um limite de 4 GB na época.
LimitRequestBody
diretiva.
O POST permite que um comprimento arbitrário de dados seja enviado a um servidor, mas há limitações baseadas em tempos limite / largura de banda, etc.
Eu acho que, basicamente, é mais seguro assumir que ele é não bom para enviar grandes quantidades de dados.
Diferentes servidores web IIS podem processar diferentes quantidades de dados no 'cabeçalho', de acordo com este artigo (agora excluído); http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;
Observe que não há limite para o número de elementos FORM que você pode passar por POST, mas apenas para o tamanho agregado de todos os pares nome / valor. Enquanto GET é limitado a 1024 caracteres, os dados POST são limitados a 2 MB no IIS 4.0 e 128 KB no IIS 5.0. Cada nome / valor é limitado a 1024 caracteres, conforme imposto pela especificação SGML. Claro que isso não se aplica a arquivos carregados usando enctype = 'multipart / form-data' ... Não tive problemas para enviar arquivos no intervalo de 90 a 100 MB usando o IIS 5.0, além de ter que aumentar o valor server.scriptTimeout bem como minha paciência!
Em um aplicativo que estava desenvolvendo, encontrei o que parecia ser um limite de POST de cerca de 2 KB. Acontece que eu estava acidentalmente codificando os parâmetros no URL em vez de transmiti-los no corpo. Portanto, se você estiver enfrentando um problema, definitivamente há um limite muito pequeno no tamanho dos dados POST que você pode enviar codificados na URL.
O HTTP pode não ter um limite superior, mas os servidores da web podem ter um. No ASP.NET, há um limite de aceitação padrão de 4 MB, mas você (o desenvolvedor / webmaster) pode alterá-lo para um valor maior ou menor.