Pausas no upload HTTP e Expect: 100-continue
Reconheça a troca Expect: 100-continue e distinga seu breve ponto de decisão de um upload que travou durante a transferência de dados.
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ção | O que investigar |
|---|---|
| 100 Continue | O cliente pode prosseguir com o corpo |
| Uma rejeição final antes do corpo | A operação foi recusada na fase de cabeçalhos |
| Nenhuma resposta intermediária esperada | A 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.