我正在使用Javascript中的xmlhttprequest進行PUT請求以將對象上載到S3存儲桶。 CORS設置正確。這是我正在嘗試的代碼。對於PUT請求的DOM異常19
var bucketPath = 'http://<bucket-name>.s3.amazon.com/'
var fileName = <name> + ".json";
var uploadPath = bucketPath + fileName.replace(/\s/g,"+");
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
showData();
}
else{
showError();
}
};
xmlhttp.open("PUT",uploadPath,false);
xmlhttp.send(JSON.stringify(jsonObject), replacer);
我得到的代碼的最後一行DOM異常19。不知道什麼是錯的。我試着用樣本測試腳本做同樣的工作。只有當我嘗試將它用於我的應用程序時,它才拋出此異常。
在Chrome調試器下的Network選項卡中,我可以看到一個HTTP請求,其中Method爲OPTIONS,Type爲pending。
我看不到正在發送的實際PUT請求。任何人都可以告訴我問題是什麼,異常是什麼意思?
更新: 仔細查看從jsfiddle和我的應用程序發送的請求。我看到2個請求是從JS Fiddle發送預檢HTTP OPTIONS請求發送的,然後是實際的PUT請求。
雖然它在JS小提琴上效果很好,但另一方面,我的應用程序中的相同代碼發送預檢HTTP OPTIONS請求,但沒有得到200返回狀態。這就是它失敗的原因。
任何想法爲什麼我沒有得到HTTP OPTIONS請求的成功。
我見無處正在使用CORS ... – Ian
我的意思。我已經爲我的S3存儲區設置了CORS規則,以允許來自我的網站的PUT請求 –
但是瀏覽器不知道這一點。我相信你需要使用這樣的東西:http://www.html5rocks.com/en/tutorials/cors/ – Ian