--

有意栽花花不发

无心插柳柳成荫

0048-00000201

更新时间:2023-07-19 10:31:16

问题描述

在2023年08月15日后为Bucket开通传输加速,如果通过OSS传输加速域名访问其中后缀为.apk或者.ipa的文件,服务器返回400错误。

问题原因

出于安全考虑,自2023年08月15日起,针对该日期之后开通传输加速的Bucket,通过OSS传输加速域名(bucketname.oss-accelerate.aliyuncs.com或bucketname.oss-accelerate-overseas.aliyuncs.com)访问后缀为.apk或者.ipa的文件,使用URL签名或匿名访问请求将被阻断。服务器返回400错误,错误码为ApkDownloadForbidden。 

问题示例

以下请求使用OSS传输加速域名匿名访问.apk文件,服务器返回400错误。

GET /test.apk HTTP/1.1
Host: oss-example.oss-accelerate.aliyuncs.com

HTTP/1.1 400 Bad Request
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>ApkDownloadForbidden</Code>
  <Message>The APK file is not allowed to be distributed in a public network using the OSS endpoint, please use CNAME instead.</Message>
  <RequestId>xxxxxxxxxxxxx</RequestId>
  <HostId>oss-example.oss-accelerate.aliyuncs.com</HostId>
</Error>

解决方案

使用自有域名访问上述文件时将不会被阻断。如何使用自有域名访问OSS,请参见绑定自定义域名

 

0048-00000201_对象存储(OSS)-阿里云帮助中心 

绑定自定义域名

更新时间:2023-12-14 15:30:39

产品详情

相关技术圈

我的收藏

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

文件上传到OSS后,OSS会使用Bucket默认域名生成文件访问地址。使用浏览器访问该地址时,会触发强制下载行为。如果您的业务不希望暴露Bucket默认域名或有在浏览器中预览文件的需求,您需要为Bucket绑定自定义域名,然后通过自定义域名访问该Bucket中的文件。绑定自定义域名后,不影响继续使用OSS提供的域名。

前提条件

  • 已创建Bucket。具体步骤,请参见创建存储空间

  • 已注册二级域名。支持绑定非阿里云注册的域名。如果您还未注册域名,您可以在阿里云域名服务平台注册域名。具体步骤,请参见注册域名

  • 如果要绑定的Bucket的地域在中国内地,确保域名已备案。支持绑定非阿里云备案的域名。如果您的域名还未备案,您可以在阿里云ICP备案系统备案域名。具体步骤,请参见ICP备案流程概述

使用场景

  • 文件预览:通过自定义域名访问OSS Bucket,避免OSS强制增加下载响应头,实现在浏览器中预览文件。

  • 品牌形象和专业性:将自定义域名绑定到OSS Bucket,提供个性化域名,增强品牌形象和专业性,增加用户信任度。

  • 防止域名被拦截:一些应用或平台可能会对Bucket默认域名进行拦截。您可以为Bucket绑定自定义域名,以确保您的OSS Bucket中的资源能够被正常访问。

  • 访问方便性:使用自定义域名访问OSS Bucket,方便易记,相比使用OSS默认域名,更简洁友好,轻松访问和分享资源。

  • 用户体验优化:通过自定义域名,提高访问速度,结合CDN加速技术,实现快速内容分发和下载,减少延迟,提升用户体验。

  • 链接的持久性:绑定自定义域名到OSS Bucket后,即使后续存储位置或服务有变化,用户仍可使用相同域名访问资源,确保链接的持久性,长期可访问和使用存储资源。

实现原理

访问Bucket默认域名会默认下载文件,而绑定自定义域名后会默认预览文件的实现原理如下:

访问Bucket默认域名

访问自定义域名

出于数据传输安全考虑,使用OSS提供的Bucket默认域名(<bucketName>.oss-<regionId>.aliyuncs.com)访问Bucket的文件(网页、图片)时,OSS会在返回中强制增加下载响应头(x-oss-force-download: trueContent-Disposition: attachment)。浏览器检测到Content-Disposition: attachment时,会触发强制下载行为。使用OSS提供的域名访问文件时,触发下载行为的请求流程如下:

2.png

关于使用OSS的默认Bucket域名访问文件,触发自动下载的生效时间和生效对象,请参见附录:强制下载命中的x-oss-ec规则

使用限制

  • 不支持绑定中文域名。

  • 每个域名只能绑定至一个Bucket。

  • 每个Bucket最多可以绑定100个域名。

  • 通过OSS管理控制台绑定自定义域名时,不允许绑定泛域名(将域名前缀设置为*,从而将二级域名的所有子域名都指向Bucket默认域名)。通过CDN加速OSS时,允许绑定泛域名,但该域名不会在OSS管理控制台显示。

操作步骤

步骤一:绑定自定义域名

根据域名所属服务提供商和所属账号,参考对应的步骤将域名绑定至OSS Bucket。

说明

绑定当前阿里云账号注册的域名

绑定其他阿里云账号注册的域名

绑定非阿里云账号注册的域名

将当前阿里云账号注册的域名,绑定至OSS Bucket的操作步骤如下:

  1. 登录OSS管理控制台

  2. 单击Bucket 列表,然后单击目标Bucket名称。

  3. 在左侧导航栏,选择Bucket 配置>域名管理

  4. 域名管理页面,单击绑定域名

  5. 绑定域名面板,输入要绑定的自定义域名,例如static.example.com,开启自动添加 CNAME 记录,然后单击提交

    1.png

    成功提交后,云解析DNS会根据您填写的域名自动添加一条CNAME记录,将自定义域名解析至被绑定的Bucket的外网访问域名。

    1.png

    说明

    如果您没有开启自动添加 CNAME 记录,在提交后,您需要在云解析DNS控制台手动添加一条CNAME记录,否则绑定的自定义域名不会生效。

步骤二:验证自定义域名

绑定自定义域名后,您可以使用nslookupdig命令来检查CNAME解析的结果。如果域名解析结果显示为您绑定的Bucket的外网访问域名,则说明自定义域名的CNAME解析已生效。

nslookup

dig

将example.com替换为您要查询的域名,然后执行以下命令。

nslookup -type=CNAME example.com

成功返回示例如下。

1.png

步骤三:使用自定义域名

自定义域名生效后,您可以直接通过HTTP协议访问文件。

  1. 上传文件。

    具体操作,请参见简单上传

  2. 获取文件URL。

    临时文件URL

    长期文件URL

    获取临时有效的文件URL的操作步骤如下:

    1. 设置文件读写权限ACL为私有。

      具体操作,请参见设置Object ACL

    2. 私有文件URL的格式为http://YourDomain/ObjectName?签名参数。您可以通过以下方法获取文件URL并设置URL的有效时长。

    使用OSS控制台

    使用图形化管理工具ossbrowser

    使用阿里云SDK

    使用命令行工具ossutil

    1. 登录OSS管理控制台

    2. 单击Bucket列表,然后单击目标Bucket名称。

    3. 在左侧导航栏,选择文件管理 > 文件列表

    4. 在文件列表页面,单击目标文件名称。

    5. 详情面板的自有域名,选择绑定的自定义域名,其他保持默认值,然后单击复制文件URL

      2.png

  3. 在浏览器中,访问生成的文件URL。

    2023-11-07_11-01-40.png

后续操作

使用HTTPS协议

使用CDN加速

避免盗刷

加速跨境传输

托管静态网站

如果您希望使用HTTPS协议访问自定义域名,您需要上传HTTPS证书。具体步骤,请参见证书托管

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐