2014-05-25 3 views

답변

1

요약 :이 플러스를 포함하지 않을 때까지 이 서명을 다시 '+'문자 이상 :

내가 발견 작업 솔루션이 포럼 게시물에 @chadsaun에 의해 제안되었다
if (signature.indexOf('+') != -1) { 
    setTimeout(function(){ 
     //regenerate signature until it doesn't contain + anymore 
     generateSignature(); 
    }, 400); 
} 

: http://www.uploadify.com/forum/#/discussion/comment/10777

전체 Heroku가 예제 코드 솔루션 : 나는 GUE

app.get('/sign_s3', function(req, res){ 
    var object_name = req.query.s3_object_name; 
    var mime_type = req.query.s3_object_type; 
    var amz_headers = "x-amz-acl:public-read"; 
    var signature, expires; 
    function generateSignature() { 
     var thisTime = new Date().getTime(); 
     expires = Math.ceil((thisTime + 10000)/1000); 
     var put_request = "PUT\n\n" + mime_type + "\n" 
         + expires + "\n" + amz_headers 
         + "\n/" + S3_BUCKET + "/" 
         + object_name; 

     signature = crypto.createHmac('sha1', AWS_SECRET_KEY) 
         .update(put_request) 
         .digest('base64'); 
     console.log(signature); 

     if (signature.indexOf('+') != -1) { 
      setTimeout(function(){ 
       //regenerate signature until it doesn't contain + anymore 
       generateSignature(); 
      }, 400); 
     } else { 
      var url = 'https://' + S3_BUCKET + '.s3.amazonaws.com/' + object_name; 
      var credentials = { 
       signed_request: url + "?AWSAccessKeyId=" + AWS_ACCESS_KEY 
           + "&Expires=" + expires + "&Signature=" 
           + signature, 
       url: url, 
      }; 

      res.write(JSON.stringify(credentials)); 
      res.end(); 
     } 
    } 
    generateSignature(); 
}); 
+0

**에서는 setTimeout() **이 ** (** 가능한 generateSignature을 방지하기 위해 사용) * * 스패밍의 루프 ** Node.js ** 호출 스택 **. – AmpT

0

ss에 서명해야합니다. 이 같은 :

signature = encodeURIComponent(
    crypto.createHmac('sha1', AWS_SECRET_KEY) 
     .update(put_request) 
     .digest('base64') 
); 

당신이 서명 '+'포함 여부를 확인하지 않아도 이런 식으로