#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) с запросами.