2016-10-03 3 views
0

Я знаю, что браузер сначала отправит OPTIONS на сервер. Но я сталкиваюсь с этой штукой в ​​Angularjs 1.5. Я пытаюсь отправить запрос PUT и отправляет ВАРИАНТЫ. Почему это странно ?, потому что я использую приложение для проверки всех моих URL-адресов, а URL-адрес работает с PUT.

let fd = new FormData() 
let d 
for (d in $scope.uploadAutos) { 
    fd.append(d, $scope.uploadAutos[d]) 
} 

$http({ 
    method: 'PUT', 
    url: `http://sitio.api.com/vehiculo/${parseInt($routeParams.id, 10)}`, 
    data: fd, 
    headers: { 'Content-Type': 'undefined' } 
    }).then(success => { 
    console.log(success) 
    }, error => { 
    console.log(error) 
    } 
) 

это, до сих пор, как я работал делать GET и POST запрос, который прекрасно работает ... но с PUT ... ммм что-то не работает. Бэкэнд подходит для того, что сказано выше, что, используя приложение api для отдыха для проверки всего моего URL-адреса, URL-адрес PUT работает нормально. Любая помощь будет отличной :). спасибо

+1

Если ответ на запрос OPTIONS, который возвращает OK, тогда код должен правильно отправить запрос PUT после этого. Можете ли вы проверить, каков ответ бэкэнд на этот запрос OPTIONS? –

ответ

3

В идеале вы увидите два запроса - запрос ОПЦИИ, т. е. запрос перед полетом. Это необходимо для проверки заголовков запросов Cross Origin.

После того, как это подтвердится, ваш клиент сможет выполнить фактический запрос POST/PUT. Если ваш запрос перед полетом не работает, это означает, что ваши заголовки запросов CORS не установлены должным образом на вашем сервере.

следующие заголовки должны быть установлены:

Access-Control-Allow-Origin 
Access-Control-Allow-Methods ("GET, POST, PUT, DELETE, OPTIONS") 
Access-Control-Allow-Headers 
Access-Control-Max-Age 
1

Это слово я искал перед полетом !! лол. Хорошо, у меня все работает. Первый. с моей стороны не было информации. Поэтому я понял, что проблема не в угловой, а не в моем бэкэнде, проблема заключается в документе slim php и, насколько мне известно. Whe вы используете PUT или DELETE в функцию карты, вы должны добавить OPTIONS, это потому, что

Mozilla есть ответ

Поперечное Origin совместного использования ресурсов стандартных работ путем добавления новых HTTP заголовки разрешить серверам описывать набор истоков, которые разрешено читать эту информацию с помощью веб-браузера. Кроме того, для методов запросов HTTP, которые могут вызывать побочные эффекты для пользовательских данных (в частности, для HTTP-методов, отличных от GET, или для использования POST с некоторыми типами MIME), спецификация требует, чтобы браузеры «предваряли» запрос , запрашивая поддерживаемые методы с сервера с помощью метода запросов HTTP OPTIONS, а затем после «утверждения» от сервера, отправляющего фактический запрос с помощью HTTP-запроса . Серверы также могут уведомлять клиентов о том, должны ли отправляться «учетные данные» (включая файлы cookie и данные HTTP-аутентификации).

Смежные вопросы