
# 如何在浏览器中在线预览OBS中的对象？
#### 背景信息
基于安全合规要求，华为云对象存储服务OBS禁止通过OBS的默认域名（[桶访问域名或静态网站访问域名](https://support.huaweicloud.com/productdesc-obs/obs_03_0152.html)）在线预览桶内对象，即使用上述域名从浏览器访问桶内对象（如视频、图片、网页等）时，不会显示对象内容，而是以附件形式下载。
OBS不支持在线预览对象而是以附件形式下载对象的生效时间和区域如下：
自2022年1月1日起生效：华北-北京一、华北-北京四、华北-乌兰察布一、华东-上海一、华东-上海二、华南-广州、西南-贵阳一
自2022年3月25日起生效：中国-香港、亚太-曼谷、亚太-新加坡、非洲-约翰内斯堡、拉美-墨西哥城一、拉美-墨西哥城二、拉美-圣保罗一、拉美-圣地亚哥
#### 解决思路
OBS默认域名强制下载后，推荐用户使用自有域名实现在线预览。
OBS为您提供以下几种方案：
[方案一：使用OBS自定义域名访问（不开启CDN加速）]
[方案二：使用OBS自定义域名+CDN方式访问]
[方案三：CDN私有桶回源方式访问]
 #### 方案一：使用OBS自定义域名访问（不开启CDN加速）
在使用浏览器访问存储在桶中的文件时，文件的预览和下载行为由HTTP响应头Content-Disposition决定：
- 使用桶默认域名访问时，出于安全合规考虑，OBS会强制在响应头中添加"Content-Disposition:attachment"，表现为下载对象。
- 为桶绑定自定义域名后，使用自定义域名访问时，OBS不会强制在响应头中添加"Content-Disposition:attachment"，表现为预览对象。
 
#### 方案优劣势及约束限制说明
- 需要设置桶策略为公共读，桶内所有对象均可被匿名用户访问。设置桶策略为公共读，详情请参见[使用模板创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0142.html)。
- 按照工信部要求，您绑定自定义域名的桶如果在以下区域，需要提前完成[ICP备案](https://support.huaweicloud.com/qs-icp/icp_07_0002.html)。
  包括：华北-北京一、华北-北京四、华北-乌兰察布一、华东-上海一、华东-上海二、华南-广州、西南-贵阳一
  
 
#### 配置步骤
1. 为OBS桶绑定自定义域名。 
   绑定的方法请参见[绑定自定义域名](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html)。按照参考文档配置时，不需要开启CDN加速，CNAME配置为OBS桶域名。
   图1为桶绑定自定义域名   
   ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002622313509.png "点击放大")
   
   
2. 验证对象是否可以在线预览。 
   配置成功后，在对象列表页面单击对象名称，在对象基本信息页面单击"自定义域名链接"下的"复制全部"，将复制的对象访问链接分享给用户，用户可以在浏览器中通过此链接直接预览文件。
   
   
 
#### 问题排查
如果完成以上配置后，仍不能在线预览文件，请进行如下检查：
- 检查文件的元数据是否设置了"ContentDisposition: attachment"，如果是，请删除该元数据。
- 检查文件的元数据中的"ContentType"是否正确匹配文件格式且为浏览器原生支持预览的文件格式：
  - 如果文件的元数据中的"ContentType"不匹配文件格式，请[修改对象元数据](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)使"ContentType"匹配文件格式。
    例如对象是一个mp4格式的视频文件，则设置ContentType为"video/mp4"；对象是一个jpg格式的图片文件，则设置ContentType为"image/jpeg"。OBS支持的ContentType类型请参见[对象元数据Content-Type介绍](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)。
    
  
  - 如果浏览器原生不支持预览该文件格式，可以通过以下方式扩展预览能力：
    - 安装对应文件格式的浏览器预览插件。
    
    - 对于特殊格式的视频文件，使用媒体处理（Media Processing Center，简称MPC）的[视频转码](https://support.huaweicloud.com/usermanual-mpc/mpc010007.html)转换为浏览器兼容的预览格式。
     
   
 
 #### 方案二：使用OBS自定义域名+CDN方式访问
#### 方案优劣势及约束限制说明
- 需要设置桶策略为公共读，桶内所有对象均可被匿名用户访问。
- 按照工信部要求，您绑定自定义域名的桶如果在以下区域，需要提前完成[ICP备案](https://support.huaweicloud.com/qs-icp/icp_07_0002.html)。
  包括：华北-北京一、华北-北京四、华北-乌兰察布一、华东-上海一、华东-上海二、华南-广州、西南-贵阳一
  
- 该方案支持HTTPS访问。如果需要使用HTTPS，需要将证书导入CDN。详情请参见[HTTPS证书配置](https://support.huaweicloud.com/usermanual-cdn/zh-cn_topic_0064907771.html)。
- 该方案以"源站域名"方式接入CDN，无法享受OBS针对CDN回源流量的特殊计费和流量包优惠，将统一按照公网流出费用进行结算。
 
#### 配置步骤
1. 为OBS桶绑定自定义域名。 
   绑定的方法请参见[绑定自定义域名](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html)。按照参考文档配置时，需要开启CDN加速，CNAME配置为CDN分配的CNAME域名。
   
   
2. 登录[CDN控制台](https://console.huaweicloud.com/cdn/?#/cdn/domain)的"域名管理"界面，单击相应域名的名称，进行如下配置：
   
   1. 在"回源配置 \> 源站配置"中，将"源站类型"配置为"OBS桶域名"，并将"源站地址"配置为OBS桶域名，HTTP端口：80，HTTPS端口：443。
      图2源站配置   
      ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002591993966.png "点击放大") 
   
   2. 在相应域名的"高级配置"中添加"Content-Disposition"响应头，取值为"inline"。
      图3高级配置   
      ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002591834068.png "点击放大") 
   
   
   
   
3. 验证对象是否可以在线预览。 
   配置成功后，在对象列表页面单击对象名称，在对象基本信息页面单击"自定义域名链接"下的"复制全部"，将复制的对象访问链接分享给用户，用户可以在浏览器中通过此链接直接预览文件。
   
   
 
#### 问题排查
如果完成以上配置后，仍不能在线预览文件，请进行如下检查：
- 清理本地浏览器缓存后重试。
- 在[CDN控制台](https://console.huaweicloud.com/cdn/?locale=zh-cn#/cdn/overview)刷新缓存，具体方法请参见[缓存刷新](https://support.huaweicloud.com/usermanual-cdn/cdn_01_0112.html)。
- 检查文件的元数据是否设置了"ContentDisposition: attachment"，如果是，请删除该元数据。
- 检查文件的元数据中的"ContentType"是否正确匹配文件格式且为浏览器原生支持预览的文件格式：
  - 如果文件的元数据中的"ContentType"不匹配文件格式，请[修改对象元数据](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)使"ContentType"匹配文件格式。
    例如对象是一个mp4格式的视频文件，则设置ContentType为"video/mp4"；对象是一个jpg格式的图片文件，则设置ContentType为"image/jpeg"。OBS支持的ContentType类型请参见[对象元数据Content-Type介绍](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)。
    
  
  - 如果浏览器原生不支持预览该文件格式，可以通过以下方式扩展预览能力：
    - 安装对应文件格式的浏览器预览插件。
    
    - 对于特殊格式的视频文件，使用媒体处理（Media Processing Center，简称MPC）的[视频转码](https://support.huaweicloud.com/usermanual-mpc/mpc010007.html)转换为浏览器兼容的预览格式。
     
   
 
 #### 方案三：CDN私有桶回源方式访问
#### 方案优劣势及约束限制说明
- 该方案不需要将桶设置为公共读，可用私有桶实现。
- 该方案不需要配置OBS自定义域名，仅需在CDN配置加速域名。按照工信部要求，您的桶如果在以下区域，使用的加速域名需要提前完成[ICP备案](https://support.huaweicloud.com/qs-icp/icp_07_0002.html)。
  包括：华北-北京一、华北-北京四、华北-乌兰察布一、华东-上海一、华东-上海二、华南-广州、西南-贵阳一
  
- 该方案支持HTTPS访问。如果需要使用HTTPS，需要将证书导入CDN。详情请参见[HTTPS证书配置](https://support.huaweicloud.com/usermanual-cdn/zh-cn_topic_0064907771.html)。
 
#### 配置步骤
1. 在[CDN控制台](https://console.huaweicloud.com/cdn/?#/cdn/domain)将准备好的自有域名添加为加速域名，并将OBS私有桶设置为源站。
   
   添加加速域名时，关键参数按如下设置，其他参数设置请参见[添加CDN加速域名](https://support.huaweicloud.com/qs-cdn/cdn_01_0059.html)。
   - 业务类型：根据您的业务类型，选择"网站加速"或"文件下载加速"或"点播加速"。
   
   - 源站：单击"添加源站"，"源站类型"选择"OBS桶域名"，"源站地址"配置为OBS桶域名（可在桶概览页面的"域名信息"区域查询"访问域名"信息）。
   
   
   图4设置源站类型   
   ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002622353659.png "点击放大")
   
   
2. 添加完加速域名后，再为域名设置自定义HTTP响应头"Content-Disposition"，取值为"inline"。 
   图5高级配置   
   ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002591914584.png "点击放大")
   1. 在域名列表页单击加速域名的名称，进入域名概览页面。
   
   2. 切换至"高级配置"页签，单击"HTTP header配置"旁边的![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002592023498.png)。
   
   3. 在"编辑HTTP header"弹窗，单击"添加"，设置响应头名称为"Content-Disposition"，响应头取值为"inline"。
   
   4. 单击"确定"。
   
   
   
   
3. 在DNS上进行CNAME配置。 
   配置方法请参见[绑定自定义域名](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html)中的CNAME配置步骤。其中，CNAME配置中的"记录值"为CDN分配的CNAME域名（在CDN域名列表页面获取）。
   图6获取CDN分配的CNAME域名   
   ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002592025940.png "点击放大")
   图7添加记录集   
   ![](https://support.huaweicloud.com/obs_faq/figure/zh-cn_image_0000002591993984.png "点击放大")
   
   
4. 验证对象是否可以在线预览。 
   配置成功后，将"**http://*CDN加速域名* /*对象访问路径***"拼接成的链接分享给用户，用户可以在浏览器中通过此链接直接预览文件。
   - CDN加速域名：为[1]添加的加速域名。
   
   - 对象访问路径：请在对象列表页面，单击对象操作列的"分享"，在"分享文件"弹窗，单击链接信息下的"复制路径"。详情请参见[分享对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0046.html#ZH-CN_TOPIC_0000001858186070__zh-cn_topic_0000001828075636_zh-cn_topic_0129289202_section2745155111154)。
   
   
   例如：您配置的加速域名为"testexample.com"，对象访问路径为"testfolder/test.txt"，则拼接的用户访问对象链接为：http://testexample.com/testfolder/test.txt
   
   
 
#### 问题排查
如果完成以上配置后，仍不能在线预览文件，请进行如下检查：
- 清理本地浏览器缓存后重试。
- 在[CDN控制台](https://console.huaweicloud.com/cdn/?locale=zh-cn#/cdn/overview)刷新缓存，具体方法请参见[缓存刷新](https://support.huaweicloud.com/usermanual-cdn/cdn_01_0112.html)。
- 检查文件的元数据是否设置了"ContentDisposition: attachment"，如果是，请删除该元数据。
- 检查文件的元数据中的"ContentType"是否正确匹配文件格式且为浏览器原生支持预览的文件格式：
  - 如果文件的元数据中的"ContentType"不匹配文件格式，请[修改对象元数据](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)使"ContentType"匹配文件格式。
    例如对象是一个mp4格式的视频文件，则设置ContentType为"video/mp4"；对象是一个jpg格式的图片文件，则设置ContentType为"image/jpeg"。OBS支持的ContentType类型请参见[对象元数据Content-Type介绍](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)。
    
  
  - 如果浏览器原生不支持预览该文件格式，可以通过以下方式扩展预览能力：
    - 安装对应文件格式的浏览器预览插件。
    
    - 对于特殊格式的视频文件，使用媒体处理（Media Processing Center，简称MPC）的[视频转码](https://support.huaweicloud.com/usermanual-mpc/mpc010007.html)转换为浏览器兼容的预览格式。
     
   
 
