A conexão é aberta. Os cabeçalhos da requisição saem. O arquivo parece não avançar. Uma explicação é que o cliente está esperando uma resposta a Expect: 100-continue antes de enviar o corpo.

O mecanismo permite ao destinatário recusar uma requisição a partir de seus cabeçalhos antes que um upload potencialmente grande seja enviado. A sequência bem-sucedida comum é:

request headers → 100 Continue → request body → final response

100 é informativo: permite ao cliente prosseguir, mas não significa que o arquivo foi armazenado ou que a operação da aplicação teve êxito. Um Git push que retorna HTTP 417 é um caso concreto de expectativa não atendida.

Descubra qual resposta o cliente recebeu

ObservaçãoO que investigar
100 ContinueO cliente pode prosseguir com o corpo
Uma rejeição final antes do corpoA operação foi recusada na fase de cabeçalhos
Nenhuma resposta intermediária esperadaA política de espera do cliente e o tratamento nesse caminho

o curl expõe uma configuração dedicada de espera por expect-continue. Se essa espera do libcurl expirar sem a resposta esperada, ele envia o corpo mesmo assim; a expiração não é automaticamente uma transferência inteira fracassada. A configuração é separada do tempo permitido para a transferência completa. Aumentar este último pode deixar a mesma pausa inicial sem explicação.

Identifique também qual conversa HTTP transporta o Expect. Com um CONNECT comum para um destino HTTPS, a troca de upload do site fica dentro do TLS; o proxy de encaminhamento não simplesmente inspeciona o cabeçalho de expectativa interno. Um caminho de interceptação ou de encaminhamento em texto claro é diferente.

Remover a expectativa pode ser uma escolha deliberada de compatibilidade, mas significa que o cliente pode começar a enviar um corpo grande antes de saber de uma rejeição precoce. Compare esse comportamento com o requisito real. Não descreva uma solução histórica para um proxy antigo como instrução universal para retirar o cabeçalho de todo upload.

Artigos relacionados