七牛云——对象存储私有空间下载凭证认证失败401[“error“:“download token auth failed“]解决方案

问题描述

官方文档 

对象存储 > 产品手册 > 安全机制 > 下载凭证:https://developer.qiniu.com/kodo/manual/1202/download-token 

解决方案

1、SECRET_KEY不正确。

SecretKey可在下面这地方获取:

2、 DownloadUrl不完整

DownloadUrl需要包括协议://自定义域名[或者测试域名]/文件名

DownloadUrl = 'http://78re52.com1.z0.glb.clouddn.com/resource/flower.jpg'

例: 

    /**
     * 获取私有空间文件
     * @param fileKey
     * @return
     */
    public String getPrivateFile(String fileKey) throws Exception{
        String encodedFileName = URLEncoder.encode(fileKey, "utf-8").replace("+", "%20");
        String publicUrl = String.format("%s/%s", "http://" + domain, encodedFileName) ;
        long expireInSeconds = 3600;//1小时,可以自定义链接过期时间
        String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);
        return finalUrl;
    }

 3、官方文档中的注意事项

注意:

  • 为确保客户端、业务服务器和七牛服务器对于授权截止时间的理解保持一致,需要同步校准各自的时钟。频繁返回 401 状态码时请先检查时钟同步性与生成 e 参数值的代码逻辑。

  • token 必须放在请求的最后,token 之后的参数会被忽略。以请求 http://test.cinem.net/aaaa.jpg?e=1778754963&token=sQvk4AXf0rEkzcytkr...XjI0M:zwvwiM0wsMBRj46xcby05U=&attname=geral_TS-PFS3010-8ET为例,此时attname=geral_TS-PFS3010-8ET会被忽略,并不生效。

  • 对于包含中文或其它非英文字符的 Key,需要做到以下两点:

    • Key 本身要做 UTF-8 编码

    • 为 URL 签名之前,对 Path 部分(不含前导 / 符号,通常就是 Key 本身,即上例中的 resource/flower.jpg)做一次URL 安全的 Base64 编码

参考文章

七牛图片下载之Token生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starzkg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值