Как использовать Postman для запроса Laravel $ POST
Как я могу попробовать отправить запрос post в приложение Laravel с почтальоном?
обычно Laravel имеет csrf_token
что мы должны пройти с запросом POST / PUT. Как я могу получить и отправить это значение в почтальона? Возможно ли это вообще без отключения защита CSRF?
4 ответов
Edit:
Ах, подождите, я неправильно понял вопрос. Вы хотите сделать это, не выключая защиту CSRF? Как сказал Бхарат Геледа: вы можете сделать маршрут, который возвращает только токен и вручную скопировать его в _token
поле в postman.
но я бы рекомендовал исключить ваши вызовы api из защиты CSRF, как показано ниже, и добавить некоторую аутентификацию API позже.
какая версия laravel вы бежать?
что Laravel 5.2 и выше:
С 5.2 токен CSRF требуется только на маршрутах с web
промежуточное. Поэтому поместите свои маршруты api вне группы с web
промежуточное.
см. заголовок "файл маршрутов по умолчанию" в документация для получения дополнительной информации.
фреймворк Laravel 5.1 и 5.2:
вы можете исключить маршруты, которые не должны иметь защиту CSRF в VerifyCsrfToken
middleware нравится это:
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'api/*',
];
}
см. заголовок "исключение URI из защиты CSRF"документация для получения дополнительной информации.
Если вы храните свои сеансы в Cookies, вы можете захватить Cookie из запроса auth в инструментах разработчика.
скопируйте и вставьте этот файл Cookie в заголовок ваших запросов POSTMAN или Paw.
этот подход позволяет ограничить тестирование API текущим сеансом.
1.Вы можете создать новый маршрут для отображения токена csrf с помощью контроллера с помощью функции ниже. (Используйте запрос Get на маршруте)
public function showToken {
echo csrf_token();
}
2.Выберите вкладку тело на postman, а затем выберите x-www-form-urlencoded.
3.Скопируйте токен и вставьте в postman значение ключа с именем _token.
4.Выполните запрос post на URL / Endpoint
в laravel, 5.3. Перейти к app/Http/Kernel.php
найти middlewareGroups
затем прокомментируйте VerifyCsrfToken. Потому что он выполняет все промежуточное ПО перед обслуживанием вашего запроса.
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
***// \App\Http\Middleware\VerifyCsrfToken::class,***
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];