OSS匿名用户无法访问公共读Object的解决办法

问题描述

在使用阿里云对象存储OSS时,文件(Object)已经设置为公共读,但匿名用户无法访问此公共读的Object。

问题原因

当您的文件(Object)设置为公共读后,所有用户都可以访问您的Object,但以下设置会导致匿名用户无法访问公共读的Object:

  • 设置了请求者付费模式:开启请求者付费模式后,读取存储空间(Bucket)内数据时产生的流量费用和请求费用由请求者支付,Bucket拥有者仅支付存储费用。所以请求方必须提供身份验证信息,以便OSS能够识别请求方,从而对请求方而非Bucket拥有者收取请求所产生的费用。匿名用户访问时不会携带身份验证信息,所以会导致匿名用户访问失败。
  • 设置了Bucket Policy:Bucket Policy是阿里云OSS推出的针对Bucket的授权策略,您可以通过Bucket Policy禁止或允许其他用户访问您的OSS资源。所以,若您Bucket Policy设置了某些影响匿名用户访问的策略,也会导致匿名用户无法访问。

解决方案

当您在使用OSS过程中遇到匿名用户无法访问公共读的Object时,请参见以下操作进行解决:

  1. 首先请检查您的OSS是否设置了请求者付费模式,如果设置了请求者付费模式请参见以下两种方案进行解决:
  2. 请检查您的Bucket Policy配置是否存在影响匿名用户访问的策略,若存在,请参见使用Bucket Policy授权其他用户访问OSS资源,修改或删除影响匿名用户访问的策略。

适用于

  • 对象存储OSS