O HTTP POST pode ser ilimitado?


Respostas:


75

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.


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
Durai Amuthan.H

ou Em seu web.config, adicione uma linha em seu system.web <httpRuntime executionTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H

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:


4
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.


4 GB ainda é o máximo para o Apache? Eu achei documentado para ser 2GB.
Dan Dascalescu

@DanDascalescu: Não sei, não faço isso há muito tempo. Talvez eles tenham começado a impor um limite máximo à LimitRequestBodydiretiva.
Greg Hewgill

6

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.


2
Existe alguma regra básica para o quanto está ficando perigoso para timeouts e coisas assim?
vextorspace

3

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!


1
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.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.