2014-12-11 3 views
1

업로드 할 S3 미리 서명 된 PUT URL을 생성하는 서비스가 있습니다.AWS 사전 서명 된 PUT URL &는 &으로 대체해야합니까?

테스트하는 동안 나는 "예쁜"모드에서 URL 클릭으로 우편 배달만큼 사전 서명 된 URL에 아무 문제 업로드가없는 것으로 나타났습니다. 그러면 주소 표시 줄에 URL이 표시됩니다.

하지만 원시 출력을 복사 할 때, 그것은 것 (403)마다.

는 AWS S3가 &?

EDIT로 대체 할 & 표시를 필요합니까 : 노드/익스프레스/AWS API를 가져온다 URL을 체결 이전 방법을 보여 업데이트

router.get('/', function (req, res) { 
    var s3 = new AWS.S3(); 
    var params = {Bucket: 'some-s3-bucket', Key: 'test/'}; 
    s3.getSignedUrl('putObject', params, function (err, url) { 
     res.json({url: url}); 
    }); 
}); 

This URL would produce a 403

Clicking on this replaces the & in the URL to &

This URL would work

답변

0

아니요, 0334 서명 된 URL의 검색어 문자열 구분 기호에 &&을 html로 인코딩하면 안됩니다.

당신의 서비스가 URL을 생성하고있는 것처럼 들리며 체인에있는 URL이 잘못 인코딩 된 것입니다. 행운, 우편 배달부 또는 브라우저가 " 예쁜 "모드.

의도적으로이 작업을 수행하는 경우 가짜 인코딩이 어디에서 발생하는지 명확하지 않은 경우 컬링 또는 wget과 같은 텍스트 기반 툴로 전환하십시오. - 브라우저 기반 도구보다 진행되는 작업을 더 잘 이해할 수 있습니다.

+0

미리 서명 된 URL을 가져 오는 코드를 두 번 확인했습니다. 내가 말할 수있는 것은 이상한 일이 없다는 것입니다. 코드는 S3 사전 서명 URL 잡아 : router.get ('/', 기능 (REQ, 고해상도) { var에 S3 = 새로운 AWS.S3을(); var에있는 params =을 {버킷 'some-res.json ({url : url}); }); } s3.getSignedUrl ('putObject', params, function (err, url) ; – binarygiant

+0

나는 여전히 PostMan과 프로그래밍 방식으로 동일한 동작을합니다. – binarygiant

+0

@binarygiant 당신이 명령 줄에서'curl '을 사용한다고해도, 의도적으로 추가하지 않더라도 응답에 여전히'& '이 표시됩니까? –

관련 문제