Почтальон ПОЛУЧАЕТ запрос, не поддерживаемый в запросе на отправку

#php #laravel #http #request #postman

Вопрос:

У меня есть простой маршрут в Laravel 8, чтобы вернуть некоторые данные запроса. Но когда я отправляю запрос в Postman с выбранным сообщением, я получаю сообщение об ошибке «Метод GET не поддерживается для этого маршрута». Имейте в виду, у меня ПОЧТА выбрана в Почтальоне, а не ПОЛУЧЕНА.

Вот маршрут:

 Route::post('post-route', 'UserController@postFunction');
 

Вот функция, вызываемая в UserController:

 public function postFunction(Request $request) {
    return [
        'id1' => $request->id1,
        'id2' => $request->id2,
    ];
}
 

В Postman я передаю данные как json:

 {
    'id1': 1234,
    'id2': 4321
}
 

Я просто пытаюсь убедиться, что передаю правильные данные в запросе, но я получаю эту ошибку. Почему он пытается выполнить запрос GET?

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

1. Есть ли какие-либо статические вызовы перенаправления URL-адресов в промежуточном программном обеспечении или что-то в этом роде?

2. В моем промежуточном программном обеспечении для аутентификации есть перенаправления, но только в том случае, если пользователь не прошел проверку подлинности. В этом случае я передаю токен пользователя в заголовке для аутентификации, поэтому никаких перенаправлений. Даже если я полностью удалю промежуточное программное обеспечение, ошибка все равно возникнет.

3. Переместите маршрут из групп промежуточного программного обеспечения, отредактируйте маршрут и верните что-то из закрытия маршрута и проверьте, работает ли это.

4. Поделитесь изображением почтальона вашего звонка, поделитесь заголовками тоже, пожалуйста.

5. пожалуйста, поделитесь скриншотом звонка почтальона с заголовками

Ответ №1:

Вы не можете проверять свои сообщения, РАЗМЕЩАТЬ или УДАЛЯТЬ маршруты с помощью Postman, потому что Laravel использует защиту промежуточного программного обеспечения CSRF.

Если вы действительно хотите использовать Postman, вам нужно прокомментировать его, чтобы временно отключить это промежуточное программное обеспечение в app/Http/Kernel.php :

 protected $middlewareGroups = [
   'web' => [
       (...)
       //AppHttpMiddlewareVerifyCsrfToken::class,
   ],

   (...)
];
 

Но не забудьте включить его снова, как только вы захотите развернуть свой проект в рабочей среде!

Если вы не хотите временно отключать промежуточное программное обеспечение CSRF, вы можете выполнить действия, упомянутые здесь https://gist.github.com/ethanstenis/3cc78c1d097680ac7ef0, но это немного дольше.