七牛雲 上傳圖片 https 修改Nginx 注意事項


僅在這記錄下,今天的事情。

問題出自於Nginx 設置http 強制跳轉 https設置

1.上午,出於某些需求,我將服務器Nginx 設置http 強行跳轉 https 

server {
        listen       80;
        server_name www.server_name.com;
        rewrite ^(.*)$  https://$host$1 permanent;
}

2.下午,業務代碼沒有修改的情況下出現:七牛雲 上傳圖片 錯誤返回

 {code: "403", input: "", message: "非法操作!"}

3.難道是七牛雲服務器炸了? 但是返回結果是200 ok的情況,經過排除發現是服務器回調 信息由於原回調地址為http ,現在Nginx強制跳轉至https 后出現的錯誤,

代碼:

    
    /**
     * 創建七牛 上傳token
     * @return string
     */ 
    public static function create(){
        $expires=3600;//token 一小時過期
        
        $policy = array(
            'callbackUrl' => 'https://www.myserver.com/v1/callback/qiniu',
            'callbackBody' => '{"uid":"'.Yii::$app->user->id.'","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)"}',
            'callbackBodyType' => 'application/json',
        //    'callbackBodyType' => 'application/x-www-form-urlencoded',
        );
        
        $auth = new Auth(self::$accessKey, self::$secretKey);
        
        $upToken = $auth->uploadToken(self::$bucket, null, $expires, $policy, true);
        
        return $upToken;
    }
    
    /**
     * 驗證回調信息是否來自七牛
     * @return boolean
     */
    public static function validateCallback(){
        
        $auth = new Auth(self::$accessKey, self::$secretKey);
        //獲取回調的body信息
        $callbackBody = file_get_contents('php://input');
        //回調的contentType
        $contentType = 'application/json';
        //回調的簽名信息,可以驗證該回調是否來自七牛
        $authorization = $_SERVER['HTTP_AUTHORIZATION'];
        //七牛回調的url,具體可以參考:http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
        $url = 'https://www.myserver.com/v1/callback/qiniu';
        
        $isQiniuCallback = $auth->verifyCallback($contentType, $authorization, $url, $callbackBody);
        
        return $isQiniuCallback;
    }
    
    
}

最后將回調地址的 http 改為https 后解決問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM