Подтвердить что ты не робот

AngularJS отправляет запрос OPTIONS вместо 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;
});

Что я делаю неправильно?

4b9b3361

Ответ 2

В заголовках S3 в CORS добавить заголовок:

Access-Control-Allow-Origin: *

Ответ 4

Сервер проверит, разрешено ли вам публиковать некоторые данные на самом сервере, или нет

политика совместного использования ресурсов между источниками

это вполне нормально, что вы получаете запрос вариантов. Ваш сервер ApI должен быть настроен так, чтобы запрос от вашего домена работал правильно.