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?
upvote por mencionar Metabase.XML e eu listamos várias maneiras de alterar o limite de tamanho de upload de arquivo porque pode ser útil.
Durai Amuthan.H
Inserir o seguinte comando no prompt de comando ajuda a aumentar o limite de tamanho de upload de arquivo. "Cscript C: \ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (em bytes) referência: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H
ou encontre metabase.xml em C: \ windows \ sytem32 \ inetserv \ path e edite, mas certifique-se de que Habilitar edição direta da metabase esteja habilitado.reference
Para servidores da web atuais (2019), veja esta resposta .
Dan Dascalescu
76
É 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,
O protocolo HTTP não especifica um limite.
O método POST permite o envio de muito mais dados do que o método GET, que é limitado pelo comprimento da URL - cerca de 2 KB.
O tamanho máximo do corpo da solicitação POST é configurado no servidor HTTP e normalmente varia de 1 MB a 2 GB
O cliente HTTP (navegador ou outro agente do usuário) pode ter suas próprias limitações. Portanto, o tamanho máximo da solicitação do corpo POST é min(serverMaximumSize, clientMaximumSize).
Aqui estão os tamanhos do corpo do POST para alguns dos servidores HTTP mais populares:
Dessas respostas que mencionam um servidor da web, duas mencionam IIS e uma menciona Apache. De qualquer forma, editei minha resposta para sinalizar a sua que está mais completa e atualizada.
David Neale
3
Obrigado @DavidNeale! Deve haver um emblema para isso :) Vou tentar manter esta resposta atualizada. Acabei de adicionar o máximo para nginx.
Dan Dascalescu
Sobre isso: "mais dados do que o método GET, que é limitado pelo comprimento do URL - cerca de 2 KB." E quanto aos cabeçalhos? Por esta postagem , parece que os cabeçalhos permitem cerca de 8-16 KB.
Hans Vonn
27
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.
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!
Boa edição @Matt - mostra a importância de cortar os fatos salientes em vez de vincular cegamente
amelvin
1
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.
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.
fonte
É 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,
1 MB a 2 GB
min(serverMaximumSize, clientMaximumSize)
.Aqui estão os tamanhos do corpo do POST para alguns dos servidores HTTP mais populares:
fonte
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.
fonte
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.
fonte
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;fonte
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.
fonte
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.
fonte