Qual é o tamanho máximo de uma solicitação HTTP GET ?
Existe um erro de resposta definido que o servidor pode / deve retornar se receber uma solicitação GET que excede esse tamanho?
Isso ocorre no contexto de uma API de serviço da web, embora seja interessante ver também os limites do navegador.
web-services
http
Mark Harrison
fonte
fonte
Respostas:
O limite depende do servidor e do cliente usado (e, se aplicável, também do proxy que o servidor ou o cliente está usando).
A maioria dos servidores da Web tem um limite de 8192 bytes (8 KB), que geralmente é configurável em algum lugar na configuração do servidor. Quanto ao assunto do lado do cliente, a especificação HTTP 1.1 até alerta sobre isso. Aqui está um extrato do capítulo 3.2.1 :
O limite no Internet Explorer e Safari é de cerca de 2 KB, no Opera, de 4 KB e no Firefox, de 8 KB. Assim, podemos assumir que 8 KB é o tamanho máximo possível e que 2 KB é um tamanho mais acessível em que confiar no lado do servidor e que 255 bytes é o tamanho mais seguro para supor que todo o URL entrará.
Se o limite for excedido no navegador ou no servidor, a maioria apenas truncará os caracteres fora do limite sem nenhum aviso. Alguns servidores, no entanto, podem enviar um erro HTTP 414 . Se você precisar enviar dados grandes, use melhor o POST em vez de GET. Seu limite é muito maior, mas é mais dependente do servidor usado que o cliente. Geralmente, até cerca de 2 GB são permitidos pelo servidor Web médio. Isso também é configurável em algum lugar nas configurações do servidor. O servidor médio exibirá um erro / exceção específico do servidor quando o limite de POST for excedido, geralmente como um erro HTTP 500.
fonte
Você está fazendo duas perguntas separadas aqui:
Como já mencionado, o próprio HTTP não impõe nenhum limite embutido no tamanho da solicitação; mas os navegadores têm limites que variam de 2 a 8 KB (255 bytes, se contarmos com navegadores muito antigos ).
Essa é a pessoa que ninguém respondeu.
O HTTP 1.1 define o código de status
414 Request-URI Too Long
para os casos em que um limite definido pelo servidor é atingido. Você pode ver mais detalhes na RFC 2616 .No caso de limites definidos pelo cliente, não há sentido em o servidor retornar algo, porque o servidor não receberá a solicitação.
fonte
Os limites do navegador são:
Quer mais? Veja esta pergunta no estouro de pilha .
fonte
Uma pergunta semelhante é a seguinte: existe um limite para a duração de uma solicitação GET?
Eu atingi o limite e na minha conta de hospedagem compartilhada, mas o navegador retornou uma página em branco antes de chegar ao servidor, eu acho.
fonte
Tecnicamente, vi que o HTTP GET terá problemas se o comprimento da URL ultrapassar os 2000 caracteres. Nesse caso, é melhor usar o HTTP POST ou dividir o URL.
fonte
Como já mencionado, o próprio HTTP não impõe nenhum limite embutido no tamanho da solicitação; mas os navegadores têm limites que variam no caractere 2048 permitido no método GET.
fonte
Sim. Não há limite para uma solicitação GET.
Consigo enviar ~ 4000 caracteres como parte da string de consulta usando o navegador Chrome e o comando curl.
Estou usando o servidor Tomcat 8.x, que retornou a resposta 200 OK esperada.
Aqui está a captura de tela de uma solicitação HTTP do Google Chrome (ocultando o terminal que tentei devido a razões de segurança):
RESPOSTA
fonte