Ответ 1
Я не знаю, помогут ли вам эти ресурсы, но это похоже на ту же проблему:
HTTP POST превращается в ОПЦИИ
ПРЕДВАРИТЕЛЬНЫЙ предварительный вызов перед предпросмотром запроса $http.post
Я пытаюсь загрузить картинку в свой ведро S3. Я использую AngularJS v1.2.13.
Когда я использую простой случай, как показано в их документах (форма отправки с тегом action
), все работает нормально. Однако, если я хочу это сделать, Angular с ng-click
Angular отправляет запрос OPTIONS
вместо запроса POST
.
Ниже приведен код службы, он сначала отправляется на сервер, чтобы получить подпись (я знаю, что часть в порядке), затем пытается POST со всем.
myServices.factory('s3', function($http) {
var service = {};
service.upload = function(fileName) {
return $http(
{
method:"POST",
url: "sign",
data: { "fileName": fileName }
}
).then(
function(result) {
// success
//resolve the promise as the data
var data = result.data;
var url = "https://" + data.bucket + ".s3.amazonaws.com/";
return $http.post(url, {
"key": data.key,
"AWSAccessKeyId": data.awsKey,
"acl": data.acl,
"policy": data.policy,
"signature": data.signature,
"Content-Type": "image/jpeg",
"success_action_redirect": "http://localhost:3000/s3Uploaded"
}).then(
function(response) {
// success
console.log("s3.upload, success: ");
console.log(response);
},
function(response) {
// failed
console.log("s3.Upload, fail: ");
console.log(response);
}
);
},
function(response) {
// failed
console.log("s3.sign, fail: ");
console.log(response);
}
);
};
return service;
});
Что я делаю неправильно?
Я не знаю, помогут ли вам эти ресурсы, но это похоже на ту же проблему:
HTTP POST превращается в ОПЦИИ
ПРЕДВАРИТЕЛЬНЫЙ предварительный вызов перед предпросмотром запроса $http.post
В заголовках S3 в CORS добавить заголовок:
Access-Control-Allow-Origin: *
Angular отправляет предварительный запрос, поэтому, если вы можете вернуться к первому плану, сделайте это!
Сервер проверит, разрешено ли вам публиковать некоторые данные на самом сервере, или нет
политика совместного использования ресурсов между источниками
это вполне нормально, что вы получаете запрос вариантов. Ваш сервер ApI должен быть настроен так, чтобы запрос от вашего домена работал правильно.