2013-02-18 57 views
0

我試圖從瀏覽器上傳一個文件,它根本不起作用。S3 CORS通過選項後上傳異常

我鬥CORS配置爲:

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>GET</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

而在我的代碼,我要送這樣的:

xhr.open('PUT', "http://upload.test.s3.amazonaws.com/" + uploadFile.get("dest") +'?' + "partNumber=" + (part + 1) + "&" + "uploadId=" + uploadFile.get("uploadId"), true); 
xhr.setRequestHeader("Authorization", uploadFile.get("authorization")); 
xhr.setRequestHeader("x-amz-date", uploadFile.get("date")); 
xhr.setRequestHeader("Content-Type", uploadFile.get("rawFile").type); 
xhr.setRequestHeader("x-amz-acl", "public-read"); 
xhr.send(chunk); 

附:uploadFile有如授權密鑰和UPLOADID是來自某些屬性服務器。

當上傳開始時,我通過OPTIONS請求,但Put請求在幾秒鐘後(通常在發送一些內容百分比後4-5秒)中止。不幸的是,它會被放棄而沒有任何反饋。有沒有人知道會發生什麼?

謝謝!

編輯:基本上,我使用https://github.com/LearnBoost/knox來從多部分上傳的UPLOADID(它的工作原理,如果我使用的服務器爲整個上傳操作)

回答

0

它看起來像服務器不能使用通配符(即「*」)如果您使用CORS授權:檢查this了。

您是否嘗試過在存儲桶的AllowedOrigin標頭中指定請求域?