問題の説明
Object Storage Service (OSS) の標準ドメイン名を使用して、ブラウザからオブジェクトにアクセスすると、ブラウザがオブジェクトを表示するのではなくダウンロードします。
原因
OSS の標準ドメイン名はストレージ API の規則に従っており、ブラウザからのアクセスには最適化されていません。2019 年 9 月 24 日 17 時 00 分 00 秒以降に作成されたバケットに対して標準ドメイン名でアクセスし、かつオブジェクトのコンテンツタイプが以下のいずれかである場合、OSS は応答に x-oss-force-download ヘッダーおよび Content-Disposition ヘッダーを付加します:
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/heicContent-Disposition: attachment ヘッダーにより、ブラウザはファイルをインラインでレンダリングするのではなく、ダウンロードするよう指示されます。
例
以下は、2019 年 9 月 24 日 17 時 00 分 00 秒以降に作成されたバケット内の apple.jpeg(コンテンツタイプ:image/jpeg)へのリクエスト例です(標準ドメイン名使用時):
GET /apple.jpeg HTTP/1.1
HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Disposition: attachment
x-oss-force-download: trueContent-Disposition: attachment ヘッダーにより、ブラウザはオブジェクトを表示するのではなくダウンロードします。
ソリューション
オブジェクトをブラウザでインライン表示するには、カスタムドメイン名を使用してオブジェクトにアクセスしてください。カスタムドメイン名経由のリクエストでは、x-oss-force-download ヘッダーおよび Content-Disposition ヘッダーが付加されないため、ブラウザはオブジェクトをインラインでレンダリングします。設定手順については、「カスタムドメイン名のマッピング」をご参照ください。