Suporte a HTTP Range ausente, não é possível retomar o download do arquivo

O Discourse não oferece suporte ao cabeçalho HTTP Range e sempre responde com o código 200 OK em vez de 206 Partial Content para downloads de arquivos. Isso é inconveniente para os usuários do fórum, pois força o redownload do arquivo inteiro em caso de conexão instável com a internet.

O tópico Backup too big, is there a way to download it through "resume download" mencionou esse problema no caso de download de backup, no entanto, isso também se aplica ao download de arquivos regulares quando o armazenamento S3 não é usado.

Verifiquei a configuração do proxy nginx e não é um problema de configuração. O cabeçalho Range é passado corretamente para localhost:3000 para solicitações de /uploads/short-url/, mas o Discourse não o manipula.

Como o HTTP Range é um dos recursos básicos do HTTP, estou classificando isso como “bug”, não como “recurso”.

P.S. isso não é reproduzível aqui, em meta.discourse.org, pois ele usa S3 para armazenamento.

2 curtidas

Isso é tratado aqui:

Adicionar suporte para ranges é definitivamente possível, mas envolveria usar send_data, e ler o arquivo do disco e enviar o range:

Um pouco confuso, para ser honesto.

1 curtida