如何在浏览器中在线预览OBS中的对象?
背景信息
基于安全合规要求,华为云对象存储服务OBS禁止通过OBS的默认域名(桶访问域名或静态网站访问域名)在线预览桶内对象,即使用上述域名从浏览器访问桶内对象(如视频、图片、网页等)时,不会显示对象内容,而是以附件形式下载。
OBS不支持在线预览对象而是以附件形式下载对象的生效时间和区域如下:
自2022年1月1日起生效:华北-北京一、华北-北京四、华东-上海一、华东-上海二、华南-广州
自2022年3月25日起生效:中国-香港、亚太-曼谷、亚太-新加坡、非洲-约翰内斯堡、拉美-墨西哥城一、拉美-墨西哥城二、拉美-圣保罗一、拉美-圣地亚哥、亚太-雅加达
解决思路
OBS默认域名强制下载后,推荐用户使用自有域名实现在线预览。
OBS为您提供以下几种方案:
如果您已经为桶配置了自定义域名并使用CDN加速,但仍然强制下载,请参考CDN加速场景下访问OBS桶内对象变成强制下载处理。
方案一:使用OBS自定义域名访问
配置步骤
- 为OBS桶绑定自定义域名。
绑定的方法请参见绑定自定义域名。按照参考文档配置时,CNAME配置为OBS桶域名。
- 验证对象是否可以在线预览。
配置成功后,将“http://自定义域名/对象访问路径”拼接成的链接分享给用户,用户可以在浏览器中通过此链接直接预览文件。
如仍不能在线预览,请检查对象元数据ContentType值是否是浏览器支持的在线展示类型。
例如对象是一个mp4格式的视频文件,则设置ContentType为“video/mp4”;对象是一个jpg格式的图片文件,则设置ContentType为“image/jpeg”。OBS支持的ContentType类型请参见对象元数据Content-Type介绍。
您可以通过管理控制台、API和SDK来设置对象元数据ContentType。
方案二:使用OBS自定义域名+CDN方式访问
方案优劣势及约束限制说明
- 需要设置桶策略为公共读,桶内所有对象均可被匿名用户访问。
- 按照工信部要求,您绑定自定义域名的桶如果在以下区域,需要提前完成ICP备案。
- 该方案支持HTTPS访问。如果需要使用HTTPS,需要将证书导入CDN。详情请参见HTTPS证书配置。
配置步骤
- 在CDN控制台将准备好的自有域名添加为加速域名。
添加方法请参见添加CDN加速域名。其中“源站类型”选择“源站域名”,并将源站配置为OBS桶域名,HTTP端口:80,HTTPS端口:443。在相应域名的“高级配置”中添加“Content-Disposition”响应头,取值为“inline”。
- 将自有域名绑定到OBS桶。
绑定的方法请参见绑定自定义域名。注意:按照参考文档配置时,CNAME配置为CDN分配的CNAME域名。
- 验证对象是否可以在线预览。
配置成功后,将“http://自定义域名/对象访问路径”拼接成的链接分享给用户,用户可以在浏览器中通过此链接直接预览文件。
如仍不能在线预览,请检查对象元数据ContentType值是否是浏览器支持的在线展示类型。
例如对象是一个mp4格式的视频文件,则设置ContentType为“video/mp4”;对象是一个jpg格式的图片文件,则设置ContentType为“image/jpeg”。OBS支持的ContentType类型请参见对象元数据Content-Type介绍。
您可以通过管理控制台、API和SDK来设置对象元数据ContentType。
- (可选)如果仍然不能在线预览,参考解决方案中“方案一”进行配置后再试。
方案三:CDN私有桶回源方式访问
方案优劣势及约束限制说明
- 该方案不需要将桶设置为公共读,可用私有桶实现。
- 该方案不需要配置OBS自定义域名,仅需在CDN配置加速域名。按照工信部要求,您的桶如果在以下区域,使用的加速域名需要提前完成ICP备案。
- 该方案支持HTTPS访问。如果需要使用HTTPS,需要将证书导入CDN。详情请参见HTTPS证书配置。
配置步骤
- 在CDN控制台将准备好的自有域名添加为加速域名。
添加方法请参见添加CDN加速域名。其中“源站类型”选择“OBS桶域名”,并在源站中选择对应的OBS桶域名。
- 开启私有桶回源功能。
开启方法请参见OBS私有桶回源。
- 在DNS上进行CNAME配置。
配置方法请参见绑定自定义域名中的CNAME配置步骤。其中,CNAME配置为CDN分配的CNAME域名。
- 验证对象是否可以在线预览。
配置成功后,将“http://自定义域名/对象访问路径”拼接成的链接分享给用户,用户可以在浏览器中通过此链接直接预览文件。
如仍不能在线预览,请检查对象元数据ContentType值是否是浏览器支持的在线展示类型。
例如对象是一个mp4格式的视频文件,则设置ContentType为“video/mp4”;对象是一个jpg格式的图片文件,则设置ContentType为“image/jpeg”。OBS支持的ContentType类型请参见对象元数据Content-Type介绍。
您可以通过管理控制台、API和SDK来设置对象元数据ContentType。