本文介绍通过浏览器访问存储在OSS中的资源时被强制下载的可能原因,以及如何配置访问OSS文件时是预览行为的方法。
问题现象
通过浏览器访问存储在OSS中的资源时无法预览而是以附件形式下载。
问题原因
- 使用OSS默认域名或传输加速域名访问某个时间点创建的Bucket内的特定类型文件时,OSS会强制在返回头中增加以下两个Header。
x-oss-force-download:true Content-Disposition: attachment
标准浏览器检测到
Content-Disposition: attachment
时,会出现下载而不是预览行为。以下为使用OSS默认域名或传输加速域名访问不同类型文件,导致强制下载时命中的x-oss-ec规则说明。
- OSS默认域名
Bucket创建时间 Content-Type x-oss-ec 2017年10月01日00:00或该日期之后 text/html 0048-00000001 2019年09月23日17:00或该日期之后 - 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
- text/html
0048-00000100 2019年09月24日11:00或该日期之后 0048-00000101 2019年09月24日17:00或该日期之后 0048-00000102 2019年09月29日17:00或该日期之后 0048-00000103 2019年09月29日18:00或该日期之后 0048-00000104 2019年09月30日15:00或该日期之后 0048-00000105 2022年10月09日00:00或该日期之后 全部 0048-00000113 - 传输加速域名
Bucket开启传输加速的时间 Content-Type x-oss-ec 2020年12月31日00:00或该日期之后 text/html 0048-00000002 2020年11月17日11:07或该日期之后 全部 0048-00000106 2021年01月07日12:00或该日期之后 0048-00000107 2021年01月07日18:00或该日期之后 0048-00000108 2021年01月08日18:00或该日期之后 0048-00000109 2021年01月14日12:00或该日期之后 0048-00000110 2021年01月16日00:00或该日期之后 0048-00000111 2023年02月01日00:00或该日期之后 0048-00000112
- OSS默认域名
- Content-Type设置为
application/octet-stream
。application/octet-stream
是二进制的下载流,导致强制下载。 - Content-Disposition设置为
attachment
。 - CDN缓存了错误的Content-Type或者Content-Disposition。
- 浏览器不支持预览该格式的文件或者图片。
解决方法
- 因使用OSS默认域名或传输加速域名访问OSS资源导致的强制下载问题,您需要使用自定义域名访问文件。具体步骤,请参见控制台使用自有域名访问OSS资源。
- 因Content-Type设置导致的强制下载问题,您需要根据文件类型设置合理的Content-Type,同时确保浏览器支持预览该文件类型。关于Content-Type的更多信息,请参见如何设置Content-Type(MIME)?。
- 因Content-Disposition设置导致的强制下载问题,您需要将Object Meta中的Content-Disposition设置为
inline
。具体步骤,请参见管理文件元信息。 - 因CDN缓存导致的强制下载问题,您需要更新CDN缓存信息。
- 因浏览器不支持预览文件格式导致的强制下载,您需要确认浏览器已安装支持预览当前格式文件的插件。