Eu estava baixando algo hoje e sei que tem apenas 1,8 GB, mas depois de baixar 1,8/1,8 GB, aconteceu a coisa mais estranha. O Chrome continuou baixando o arquivo e a barra de progresso começou a mostrar a animação de carregamento e o tamanho do arquivo continuou aumentando até finalmente parar após 2,5 GB. Era um arquivo de vídeo e diz que tem 2,5 GB no meu disco e nem reproduz. Como isso acontece?
Responder1
Um dos numerosos cabeçalhos de resposta que fazem parte do protocolo HTTP é o Content-Length
cabeçalho. Basicamente, isso permite que o servidor informe ao cliente o tamanho dos dados enviados na resposta. O Chrome, como a maioria dos navegadores sensatos, usa esse cabeçalho para determinar o que mostrar para o tamanho total do arquivo ao baixar um arquivo, bem como calcular o progresso do download exibido.
Existem dois problemas com isso:
- Os servidores não são estritamente obrigados a enviar este cabeçalho (ele é necessário apenas em algumas circunstâncias, não em todas). É raro ver servidores não enviarem arquivos reais em seu disco local, mas não é incomum quando o conteúdo é gerado dinamicamente e enviado conforme é gerado (por exemplo, arquivos ZIP gerados dinamicamente por algum armazenamento em nuvem serviços que permitem aos clientes baixar grupos de arquivos de uma só vez) se enquadram nesta categoria). Quando isso acontecer, o Chrome exibirá o progresso do download sem uma porcentagem real de conclusão, mas a barra de carregamento normal para indicar que o download continua.
- Por razões de compatibilidade, nos casos em que o cabeçalho não é obrigatório, mas é enviado mesmo assim, deve ser tratado como informação consultiva em vez de ser uma indicação estrita do tamanho da resposta. Há muitos motivos para listar isso aqui, mas o resultado é que, ao buscar (ou baixar) um recurso, o Chrome (e a maioria dos navegadores) continua buscando dados até que o servidor pare de enviá-los nesses casos, porque eles não podem confiar nisso. o que o cabeçalho diz é preciso (na verdade, o Chrome ocultará pequenas discrepâncias entre o tamanho do arquivo relatado e o tamanho real do arquivo durante o download
O que aconteceu no seu caso foi resultado desse segundo problema. Quando atingiu o tamanho 'completo' do arquivo e continuou obtendo dados, o Chrome eventualmente passou a exibir coisas como faz quando não sabe o tamanho do arquivo que está baixando. As duas possíveis causas que vêm à mente para isso são um bug (no servidor ou em algum sistema intermediário) ou atividade maliciosa (provavelmente um ataque man-in-the-middle ou servidor comprometido, se for este caso).
De qualquer forma, isso provavelmente deve ser relatado ao proprietário do site do qual você baixou o vídeo, pois qualquer um dos casos provavelmente será uma má notícia para eles.
Por outro lado, você também pode ver um comportamento semelhante a este, mas sem o aumento do tamanho do arquivo, se o Chrome conseguisse buscar o arquivo inteiro da rede mais rápido do que poderia gravá-lo no disco local.