Я работаю над проектом, где я загружу файл на s3. Я использую XMLHttpRequest, чтобы отправить запрос на отправку s3 и предоставить мне статус Запрещенный 403. Когда я проверяю запрос, который я сделал в своем Firebug, он показывает «Request Method: OPTIONS» и его предполагается быть POST-запросом.Метод запроса, показывающий OPTIONS вместо POST
Вот мой код ниже:
function GetXmlHttpObject() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari, IE 7+
xmlHttp = new XMLHttpRequest();
} catch (e) {
// Internet Explorer - old IE - prior to version 7
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function uploadFile() {
console.log(AWSAccessKeyId);
var file = document.getElementById('file').files[0];
var fd = new FormData();
var key = "events/" + (new Date).getTime() + '-' + file.name;
fd.append('key', key);
fd.append('acl', 'public-read');
fd.append('Content-Type', file.type);
fd.append('AWSAccessKeyId', AWSAccessKeyId);
fd.append('policy', policyBase64)
fd.append('signature', signature);
fd.append("file",file);
var xhr = GetXmlHttpObject();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open('POST', 'https://'+bucket+'.s3.amazonaws.com/', true); //MUST BE LAST LINE BEFORE YOU SEND
xhr.setRequestHeader("Content-type","multipart/form-data");
xhr.send(fd);
}
Я застрял здесь. T__T.
И у вас есть код, который создает объекты XMLHttpRequest для старых IE, для которых этот код никогда не будет работать. – epascarello
Вы также явно устанавливаете Content-Type запроса, который вы НЕ должны делать в этом случае. –
@epascarello, вы хотите сказать, что верхний код на самом деле не работает? –