问题描述
上传文件、图片到阿里云对象存储OSS后,使用浏览器访问阿里云OSS资源,OSS资源被强制下载。
问题原因
- 使用OSS提供的默认域名,且没有经过其他配置。
-
Content-Type如果设置为application/octet-stream也会导致强制下载,这个是二进制的下载流。
-
Content-Disposition如果设置为attachment,会强制下载。
-
CDN缓存了错误的Content-Type或者Content-Disposition。
-
浏览器不支持该格式资源的展示。
出于安全考虑,从2019年9月23日起,针对之后新建的Bucket,直接使用OSS提供的默认域名,从互联网访问OSS上该Bucket的图片类型文件时,Content-Type(Mime-Type)为
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
,扩展名包括jpg、jpeg、jpe、png、tif、tiff、gif、svg、bmp、ico、ras、dib、svgz、webp、bm、jfif、x-png、exr、heic
时,Response Header中会自动加上Content-Disposition:'attachment=filename;'
。即从浏览器访问图片类型文件时,会以附件形式进行下载。
使用自定义域名访问OSS请求
前提条件
- 注册好的可用域名
- 域名已在中国工信部备案
使用限制
- 不支持中文域名。
- 每个账号可绑定的域名个数无限制。
- 每个Bucket最多可以绑定100个域名。一个域名只能绑定在一个Bucket上。
- 通过OSS管理控制台绑定自定义域名时,不允许绑定泛域名。通过CDN服务加速OSS时,允许绑定泛域名,但该域名不会在OSS管理控制台显示。
绑定步骤
一、OSS 绑定自定义域名
a.如果添加的域名为阿里云当前账号下管理的域名,在添加域名时,开启“自动添加CNAME记录”后,域名解析中将自动添加cname记录。
-
- 在绑定域名面板,打开自动添加CNAME记录开关。
- 单击提交。
b.如果添加的域名为非当前账号下的域名,手动添加CNAME记录
三、配置自定义域名的SSL证书
如果使用小程序访问oss的话,https证书是必不可少的
1.申请SSL证书
2.在oss域名中选择已签发的证书后,上传
申请方式可以参考下文: