Angularjs $ http ПАРАМЕТРЫ отправки вместо PUT

#angularjs #http #put

#angularjs #http #put

Вопрос:

Я знаю, что браузер сначала отправляет параметры на сервер. Но я сталкиваюсь с этой проблемой в 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 … ммм, что-то не работает. Серверная часть подходит для того, что было сказано выше, что с помощью приложения rest api для проверки всех моих URL-адресов PUT url работает нормально. Любая помощь была бы отличной :). Спасибо

Комментарии:

1. Если ответ на возвращаемый запрос ПАРАМЕТРОВ в порядке, то после этого код должен правильно отправить ваш запрос PUT. Можете ли вы проверить, каков ответ серверной части на этот запрос ПАРАМЕТРОВ?

Ответ №1:

В идеале вы должны видеть два запроса — запрос ПАРАМЕТРОВ, то есть предполетный запрос. Это делается для проверки ваших заголовков запросов с перекрестным источником.

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

Необходимо установить следующие заголовки:

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

Ответ №2:

Это слово, которое я искал перед полетом!! лол. Хорошо, у меня все работает. Первый. с моей стороны не хватало информации. Итак, я понял, что проблема не в angular, а не в моем бэкэнде, проблема в документе slim php и в моих знаниях. Когда вы используете функцию PUT или DELETE в map, вам нужно добавить ПАРАМЕТРЫ, это потому, что

У Mozilla есть ответ

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