• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

七牛私有空间资源访问时会时不时的出现401授权错误,同一个资源有时候能访问,有时候不能访问

php 搞代码 4年前 (2022-01-25) 17次浏览 已收录 0个评论
文章目录[隐藏]

具体情况是:
某一个页面我需要从七牛私有空间请求三张证书图片资源,本地数据库中我存放的是这些证书的名称,在后台代码中我根据文件名来依次生成这些证书可以访问的私有链接地址,前端用的AngularJS框架,后台代码如下:

<code>$coach_cert = new coach_cert ();        $results = $coach_cert->listCerts ( $this->coach_id );                //七牛空间密钥        $accessKey = '';        $secretKey = '';        // 私有空间名称        $bucket = '';        // 时间戳生成        $now = time ();        $date = $now + 60;        // 下载凭证生成        foreach ( $results as &$result ) {            $download_url = "http://" . $bucket . ".7xnhmh.com2.z0.glb.qiniucdn.com/" .$result ['filename']. "?e=" . $date;            $sign = hash_hmac ( "sha1", $download_url, $secretKey, true );            $encodedSign = base64_encode ( $sign );            $token = $accessKey . ":" . $encodedSign;            $realdownloadurl = $download_url . "&token=" . $token;            $result ['filename'] = $realdownloadurl;        }        return [                 'certs' => $results         ];</code>

现在的问题是:点击查看三张证书,有时候三张证书全部能加载出来,有时候只能加载部分,不能加载的在控制台报401授权失败的错误:error: “download token auth failed”

回复内容:

具体情况是:
某一个页面我需要从七牛私有空间请求三张证书图片资源,本地数据库中我存放的是这些证书的名称,在后台代码中我根据文件名来依次生成这些证书可以访问的私有链接地址,前端用的AngularJS框架,后台代码如下:

<code>$coach_cert = new coach_cert ();        $results = $coach_cert->listCerts ( $this->coach_id );                //七牛空间密钥        $accessKey = '';        $secretKey = '';        // 私有空间名称        $bucket = <i>*本5文来源gaodai$ma#com搞$$代**码)网@</i><img>搞代码gaodaima</img>'';        // 时间戳生成        $now = time ();        $date = $now + 60;        // 下载凭证生成        foreach ( $results as &$result ) {            $download_url = "http://" . $bucket . ".7xnhmh.com2.z0.glb.qiniucdn.com/" .$result ['filename']. "?e=" . $date;            $sign = hash_hmac ( "sha1", $download_url, $secretKey, true );            $encodedSign = base64_encode ( $sign );            $token = $accessKey . ":" . $encodedSign;            $realdownloadurl = $download_url . "&token=" . $token;            $result ['filename'] = $realdownloadurl;        }        return [                 'certs' => $results         ];</code>

现在的问题是:点击查看三张证书,有时候三张证书全部能加载出来,有时候只能加载部分,不能加载的在控制台报401授权失败的错误:error: “download token auth failed”

您的签名有问题,我们是使用safebase64编码,你可以参考我们的源码
https://github.com/qiniu/php-sdk/blob/a864511adb2e50b2b0f080440e6f11d6989905ec/src/Qiniu/functions.php

URL 安全的 Base64 编码适用于以 URL 方式传递 Base64 编码结果的场景。该编码方式的基本过程是先将内容以 Base64 格式编码为字符串,然后检查该结果字符串,将字符串中的加号+换成中划线-,并且将斜杠/换成下划线_,同时尾部保持填充等号=。

/**

    1. base64_urlSafeEncode($data)
      {

      <code>   $find = array('+', '/');   $replace = array('-', '_');   return str_replace($find, $replace, base64_encode($data));</code>

      }
      /**


    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:七牛私有空间资源访问时会时不时的出现401授权错误,同一个资源有时候能访问,有时候不能访问

    喜欢 (0)
    [搞代码]
    分享 (0)
    发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址