Параметры Axios PUT в порядке, но не выполняется реальный вызов (POST работает)

Я немного смущен тем, что здесь происходит. Я провел все свои исследования CORS и заставил их работать с моими запросами POST и GET, все в порядке и блестяще. Но теперь мне понадобился запрос PUT (потому что put означает обновление). И мой запрос OPTIONS в порядке, но он не выполняет настоящий вызов. Если я изменю методы на POST, в laravel и Axios (в VueJs), это сработает. Кто-нибудь знает, вот мой ответ с сервера:

Параметры Axios PUT в порядке, но не выполняется реальный вызов (POST работает)

Версии:

  • Axios - 0.18.0 (последняя версия)

Если потребуется дополнительная информация, дайте мне знать, и я сделаю все возможное, чтобы ее предоставить.

ОБНОВЛЕНИЕ: извините, я допустил опечатку в своем последнем предложении: «Если я изменю методы на PUT, в laravel и Axios (в VueJs) это сработает»

Методы должны быть POST, а не PUT, вот так: «Если я изменю методы на POST, в laravel и Axios (в VueJs) это сработает»

Для этого маршрута в laravel разрешен метод PUT. Если вы используете Laravel-cors, проверьте, разрешен ли этот метод.

Core972 19.11.2018 16:30

@ Core972 разве не достаточно, чтобы знать? а если это не разрешено, должен ли код состояния быть не 200, а 400?

Niels Lucas 19.11.2018 16:35

Это ответ на вызов OPTIONS, который сообщает клиенту, что разрешено в запросе CORS. Он не отправит ошибку 400, потому что еще не знает, какой запрос вы собираетесь выполнить. Браузер просто не сделает запрос, если это не запрос PUT. Все проверки безопасности CORS выполняются на стороне клиента.

apokryfos 19.11.2018 16:54

Вы создали маршруты как для опций, так и для запроса на размещение? У меня была аналогичная проблема не так давно

mur762 19.11.2018 20:34

Параметры @ mur762 не должны быть методом маршрута. Это просто корс. Я знаю, что можно создать маршрут параметров в laravel, но я еще не изучал его. Но теперь это работает, см. Мой собственный ответ

Niels Lucas 20.11.2018 09:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
5
813
1

Ответы 1

Хорошо, поэтому мне пришлось поместить заголовок для разрешения метода PUT:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE"); <----

Сначала у меня не было этого заголовка, но мои GET и POST работали нормально, поэтому, возможно, заголовок по умолчанию установлен только для GET / POST? Теперь я сам определил все методы и теперь он работает. Я знаю, что это может быть лучше сделано в Laravel с пакетом cors или с помощью промежуточного программного обеспечения, но я сделаю это в будущем. Пока это работает.

Другие вопросы по теме