阿里云OSS生成签名访问链接时是否可以设置无限制的有效时长?
阿里云OSS签名URL有效期问题解答
能否生成无过期时间的OSS访问链接?
不能。阿里云OSS私有Bucket生成的签名URL设计上不支持永久有效,存在明确的最大有效期限制:
- 主账号/永久AccessKey生成签名URL,最长有效期为32400秒(9小时)
- STS临时凭证生成签名URL,最长有效期不能超过临时凭证本身的剩余有效期,最高不超过36小时
将timeout参数设置为0能否实现链接永久有效?
不能。你使用的如下配置不会生效:
$timeout = 0; //default 3600 $signedUrl = $ossClient->signUrl($bucketName, $object, $timeout, "GET"); echo $signedUrl;
阿里云OSS PHP SDK中,timeout参数传入0时,内部会自动 fallback 到3600秒的默认有效期,不会识别为永久有效。你可以提取生成的签名URL中的Expires参数验证,实际值为当前时间+3600秒对应的时间戳,到期后链接就会访问失败。
长期访问的替代方案
如果需要长期可访问的资源链接,可根据场景选择以下方案:
- 资源允许公开访问的前提下,将对应Object的ACL设置为公共读,直接使用不带签名的原生访问链接即可永久有效
- 资源需要控制访问权限的场景,可在自有业务层做代理:用户请求资源时由业务服务动态生成短时效的签名URL,再返回资源或跳转访问,即可实现权限可控的长期访问能力
内容的提问来源于stack exchange,提问作者Lulut
相关产品推荐
相关产品推荐

