七牛私人空間資源訪問時會時不時的出現401授權錯誤,同一個資源有時候能訪問,有時候不能訪問

來源:互聯網
上載者:User
具體情況是:
某一個頁面我需要從七牛私人空間請求三張認證圖片資源,本機資料庫中我存放的是這些認證的名稱,在後台代碼中我根據檔案名稱來依次產生這些認證可以訪問的私人連結地址,前端用的AngularJS架構,後台代碼如下:

$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         ];

現在的問題是:點擊查看三張認證,有時候三張認證全部能載入出來,有時候只能載入部分,不能載入的在控制台報401授權失敗的錯誤:error: "download token auth failed"

回複內容:

具體情況是:
某一個頁面我需要從七牛私人空間請求三張認證圖片資源,本機資料庫中我存放的是這些認證的名稱,在後台代碼中我根據檔案名稱來依次產生這些認證可以訪問的私人連結地址,前端用的AngularJS架構,後台代碼如下:

$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         ];

現在的問題是:點擊查看三張認證,有時候三張認證全部能載入出來,有時候只能載入部分,不能載入的在控制台報401授權失敗的錯誤:error: "download token auth failed"

您的簽名有問題,我們是使用safebase64編碼,你可以參考我們的源碼
https://github.com/qiniu/php-sdk/blob/a864511adb2e50b2b0f080440e6f11d6989905ec/src/Qiniu/functions.php

URL 安全的 Base 64 編碼適用於以 URL 方式傳遞 Base 64 編碼結果的情境。該編碼方式的基本過程是先將內容以 Base64 格式編碼為字串,然後檢查該結果字串,將字串中的加號+換成中劃線-,並且將斜杠/換成底線_,同時尾部保持填充等號=。

/**

    • 對提供的資料進行 urlsafe 的 base64 編碼。
      *

    • @param string $data 待編碼的資料,一般為字串
      *

    • @return string 編碼後的字串

    • @link http://developer.qiniu.com/docs/v6/api/overview/appendix.html#urlsafe-base64
      */

    1. base64_urlSafeEncode($data)
      {

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

      }
      /**

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.