HTML5/Javascript를 사용하여 파일을 BLOB 저장소에 직접 업로드하기 위해 Gaurav Mantri의 훌륭한 기사를 따랐습니다. JavaScript를 사용하여 blob 저장소에 파일을 저장하면 403 (서버가 요청을 인증하지 못했습니다.)
그러나 나는 업로드 부분에서 자신이 코드 부분이 403 오류와 함께 실패 것을 발견하고있다.재미있는 점은 임의로 발생한다는 것입니다. 업로드가 실제로 작동하고 모든 것이 성공적으로 완료되지만 대다수의 경우 403 오류로 인해 실패합니다.
한 가지 참고 : 나는 CORS 지원 내가 크롬을 사용하고있는 그러나 시간이 푸른 곧 추가 될 것으로 기대하고있다합니다 (chrome.exe의 --disable-웹 보안 옵션) 얻을 수 있습니다 문제를 둘러싼.
PUT https://mystorage.blob.core.windows.net/asset-38569007-3316-4350 ... Giv17ye4bocVWDbA/EQ + riNiG3wEGrFucbd1BKI9E = & 완 = 블록 & BLOCKID = YmxvY2stMA ==
403 (서버가 요청을 인증하는 데 실패했다. 확실 인증 헤더의 값이 제대로 형성되었는지 확인 서명을 포함.)
$.ajax({
url: uri,
type: "PUT",
data: requestData,
processData: false,
beforeSend: function(xhr) {
xhr.setRequestHeader('x-ms-blob-type', 'BlockBlob');
xhr.setRequestHeader('Content-Length', requestData.length);
},
success: function (data, status) {
console.log(data);
console.log(status);
bytesUploaded += requestData.length;
var percentComplete = ((parseFloat(bytesUploaded)/parseFloat(selectedFile.size)) * 100).toFixed(2);
$("#fileUploadProgress").text(percentComplete + " %");
uploadFileInBlocks();
},
error: function(xhr, desc, err) {
console.log(desc);
console.log(err);
}
});
나는 ASSE을 만든 후 30 초 지연을 뒀다 locator가 전파 될 시간을주기 위해 실제로 업로드 부분을 시작하기 전에 Azure의 t/locator/file을 사용하십시오.
내가 누락 될 수있는 것에 대한 제안 사항이 있으십니까?
공유 액세스 서명이 만료되지 않도록 할 수 있습니까? 대체 테스트로 SAS 및 .NET SDK를 사용하여 파일을 업로드 할 수도 있습니다. Fiddler를 실행하여 스토리지 서비스에서 반환 된 상세한 메시지를 볼 수도 있습니다. CORS에 관한 한 꽤 빨리 다가오고 있습니다. 지난주 // Build/conference 중에 발표 및 시연되었습니다. –
Gaurav, 나는 Build에서 // CORS를 고대하고 있었지만, 그동안 희망적으로이 문제를 해결할 수 있습니다. 아래에서 자산/위치/정책 생성 코드를 제공했습니다. .NET SDK를 사용하여 동일한 스타일의 코드를 사용하여 파일을 업로드 할 때 아무런 문제가 없으므로 문제가 무엇인지 잘 모릅니다. – Gautam