问题描述

上传文件、图片到阿里云对象存储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 Bucket 绑定自定义域名
  1. 登录OSS管理控制台
  2. 单击Bucket列表,然后单击目标Bucket名称。
  3. 在左侧导航栏,选择Bucket配置 > 域名管理
  4. 域名管理页面,单击绑定域名
  5. 绑定域名面板,输入要绑定的域名

    绑定的域名不支持泛域名,例如*.example.com

    如果提示域名冲突,表示该域名已绑定至其他Bucket。此时,您可以更换域名或通过验证域名所有权强制绑定域名。验证域名所有权会解除域名与其他Bucket的绑定关系。

    二、在自定义域名中添加CNAME记录

a.如果添加的域名为阿里云当前账号下管理的域名,在添加域名时,开启“自动添加CNAME记录”后,域名解析中将自动添加cname记录。

    1. 绑定域名面板,打开自动添加CNAME记录开关。
    2. 单击提交

b.如果添加的域名为非当前账号下的域名,手动添加CNAME记录

三、配置自定义域名的SSL证书

如果使用小程序访问oss的话,https证书是必不可少的

1.申请SSL证书

2.在oss域名中选择已签发的证书后,上传

申请方式可以参考下文:

aliyun ssl证书创建使用&apache部署

 

作者 admin

百度广告效果展示