Quando você acessa um arquivo em um navegador usando um nome de domínio do OSS, o arquivo é baixado em vez de abrir para visualização. Este tópico explica por que isso acontece e como resolver o problema.
Descrição do problema
Quando você acessa um arquivo armazenado no Object Storage Service (OSS) em um navegador usando um nome de domínio do OSS, o arquivo é baixado automaticamente em vez de ser exibido para visualização.
Causas
Para buckets criados após as 18:00 de 29 de setembro de 2019, o OSS aplica uma política de segurança aos objetos acessados por meio de um nome de domínio do OSS. Quando o Content-Type do objeto corresponde a um dos seguintes valores, o OSS adiciona dois cabeçalhos de resposta HTTP que forçam o navegador a baixar o arquivo em vez de exibi-lo inline:
image/jpeg
image/gif
image/tiff
image/png
image/webp
image/svg+xml
image/bmp
image/x-ms-bmp
image/x-cmu-raster
image/exr
image/x-icon
image/heic
O OSS adiciona os seguintes cabeçalhos à resposta:
x-oss-force-download: true
Content-Disposition: attachment
O cabeçalho Content-Disposition: attachment instrui o navegador a tratar a resposta como um download de arquivo em vez de renderizá-la inline.
Exemplos de problemas
Por exemplo, um bucket foi criado após as 18:00 de 29 de setembro de 2019. Ele contém um objeto chamado apple.jpeg com Content-Type image/jpeg. Quando você usa um nome de domínio padrão do OSS para acessar esse objeto em um navegador, o OSS adiciona os dois cabeçalhos mencionados anteriormente à resposta. Um navegador padrão então identifica o cabeçalho Content-Disposition: attachment e inicia um download em vez de uma visualização.
GET /apple.jpeg HTTP/1.1
HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Disposition: attachment
x-oss-force-download: true
Solução
O OSS aplica a política de segurança de download forçado apenas a solicitações feitas por meio de um nome de domínio do OSS. Para exibir arquivos para visualização no navegador, acesse o objeto por meio de um nome de domínio personalizado. Para obter mais informações, consulte Mapear um nome de domínio personalizado.