阿里云oss无法访问.apk或者.ipa的文件
阿里云oss无法访问.apk或者.ipa的文件
--
有意栽花花不发
无心插柳柳成荫
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: true
和Content-Disposition: attachment
)。浏览器检测到Content-Disposition: attachment
时,会触发强制下载行为。使用OSS提供的域名访问文件时,触发下载行为的请求流程如下:
关于使用OSS的默认Bucket域名访问文件,触发自动下载的生效时间和生效对象,请参见附录:强制下载命中的x-oss-ec规则。
使用限制
-
不支持绑定中文域名。
-
每个域名只能绑定至一个Bucket。
-
每个Bucket最多可以绑定100个域名。
-
通过OSS管理控制台绑定自定义域名时,不允许绑定泛域名(将域名前缀设置为*,从而将二级域名的所有子域名都指向Bucket默认域名)。通过CDN加速OSS时,允许绑定泛域名,但该域名不会在OSS管理控制台显示。
操作步骤
步骤一:绑定自定义域名
根据域名所属服务提供商和所属账号,参考对应的步骤将域名绑定至OSS Bucket。
说明
-
如果您不确定域名所属服务提供商,您可以在域名信息查询(WHOIS)页面进行查询。
-
如果您不确定域名是否属于当前阿里云账号,您可以在云解析DNS控制台进行查询。
绑定当前阿里云账号注册的域名
绑定其他阿里云账号注册的域名
绑定非阿里云账号注册的域名
将当前阿里云账号注册的域名,绑定至OSS Bucket的操作步骤如下:
-
登录OSS管理控制台。
-
单击Bucket 列表,然后单击目标Bucket名称。
-
在左侧导航栏,选择Bucket 配置>域名管理。
-
在域名管理页面,单击绑定域名。
-
在绑定域名面板,输入要绑定的自定义域名,例如
static.example.com
,开启自动添加 CNAME 记录,然后单击提交。成功提交后,云解析DNS会根据您填写的域名自动添加一条CNAME记录,将自定义域名解析至被绑定的Bucket的外网访问域名。
说明
如果您没有开启自动添加 CNAME 记录,在提交后,您需要在云解析DNS控制台手动添加一条CNAME记录,否则绑定的自定义域名不会生效。
步骤二:验证自定义域名
绑定自定义域名后,您可以使用nslookup
或dig
命令来检查CNAME解析的结果。如果域名解析结果显示为您绑定的Bucket的外网访问域名,则说明自定义域名的CNAME解析已生效。
nslookup
dig
将example.com替换为您要查询的域名,然后执行以下命令。
nslookup -type=CNAME example.com
成功返回示例如下。
步骤三:使用自定义域名
自定义域名生效后,您可以直接通过HTTP协议访问文件。
-
上传文件。
具体操作,请参见简单上传。
-
获取文件URL。
临时文件URL
长期文件URL
获取临时有效的文件URL的操作步骤如下:
-
设置文件读写权限ACL为私有。
具体操作,请参见设置Object ACL。
-
私有文件URL的格式为
http://YourDomain/ObjectName?签名参数
。您可以通过以下方法获取文件URL并设置URL的有效时长。
使用OSS控制台
使用图形化管理工具ossbrowser
使用阿里云SDK
使用命令行工具ossutil
-
登录OSS管理控制台。
-
单击Bucket列表,然后单击目标Bucket名称。
-
在左侧导航栏,选择文件管理 > 文件列表。
-
在文件列表页面,单击目标文件名称。
-
在详情面板的自有域名,选择绑定的自定义域名,其他保持默认值,然后单击复制文件URL。
-
-
在浏览器中,访问生成的文件URL。
后续操作
使用HTTPS协议
使用CDN加速
避免盗刷
加速跨境传输
托管静态网站
如果您希望使用HTTPS协议访问自定义域名,您需要上传HTTPS证书。具体步骤,请参见证书托管。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)