問題の概要
標準ドメイン名を使用してブラウザから OSS のイメージオブジェクトにアクセスすると、ブラウザがファイルをインライン表示せず、代わりにダウンロードします。
原因
2019 年 9 月 29 日 17 時 00 分 00 秒以降に作成されたバケットでは、標準ドメイン名経由で影響を受けるイメージタイプのコンテンツタイプを持つオブジェクトにアクセスした場合、OSS が自動的に以下のレスポンスヘッダーを付与します。
x-oss-force-download: true
Content-Disposition: attachmentContent-Disposition: attachment は標準 HTTP ヘッダーであり、ブラウザに対してファイルをインラインレンダリングするのではなく、ダウンロードするよう指示します。
この動作は、以下のコンテンツタイプを持つオブジェクトに適用されます。
image/jpegimage/gifimage/tiffimage/pngimage/webpimage/svg+xmlimage/bmpimage/x-ms-bmpimage/x-cmu-rasterimage/exrimage/x-iconimage/heic
事例
2019 年 9 月 29 日 17 時 00 分 00 秒以降に作成されたバケットに、apple.jpeg という名前のオブジェクト(コンテンツタイプ:image/jpeg)が格納されています。このオブジェクトを標準ドメイン名経由でアクセスすると、OSS は以下のようなレスポンスを返します。
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 ヘッダーにより、ブラウザはファイルを表示せず、ダウンロードを実行します。
ソリューション
バケットにカスタムドメイン名をマップします。カスタムドメイン名経由でオブジェクトにアクセスした場合、OSS はダウンロードをトリガーするヘッダーを返さないため、ブラウザがイメージをインラインでレンダリングします。
設定手順については、「カスタムドメイン名のマップ」をご参照ください。