Я создаю REST API, используя Laravel 5.1, и я получаю эту ошибку:
TokenMismatchException in VerifyCsrfToken.php line 53:
Вот мои маршруты.php:
Route::controller('city' , 'CityController' );
CityController:
class CityController extends Controller { public function postLocalities() { $city = Input::get('cityName'); $response = $city; return $response; } }
Вот Stacktrace ошибки, когда я ударил URL http: // localhost: 8000 / city / localities? CityName = bangalore с методом POST.
TokenMismatchException in VerifyCsrfToken.php line 53: in VerifyCsrfToken.php line 53 at VerifyCsrfToken->handle(object(Request), object(Closure)) at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54 at ShareErrorsFromSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62 at StartSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59 at EncryptCookies->handle(object(Request), object(Closure)) at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Kernel.php line 122 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87 at Kernel->handle(object(Request)) in index.php line 54 at require_once('C:\Users\betaworks02\Documents\gharbhezoBackend\public\index.php') in server.php line 21
Если вы строите API, лучше разместить промежуточное изделие CRSF на основе маршрута, а не размещать его как глобальное промежуточное ПО. Чтобы сделать это как промежуточное программное обеспечение маршрута, перейдите в файл « /app/Http/Kernel.php ».
/** * The application's global HTTP middleware stack. * * @var array */ protected $middleware = [ 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 'Illuminate\Cookie\Middleware\EncryptCookies', 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 'Illuminate\Session\Middleware\StartSession', 'Illuminate\View\Middleware\ShareErrorsFromSession', //comment out to avoid CSRF Token mismatch error // 'App\Http\Middleware\VerifyCsrfToken', ]; /** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ 'auth' => 'App\Http\Middleware\Authenticate', 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 'cors' => 'App\Http\Middleware\CorsMiddleware', 'api' => 'App\Http\Middleware\ApiMiddleware', 'csrf' => 'App\Http\Middleware\VerifyCsrfToken'// add it as a middleware route
Теперь вы можете разместить его на маршрутах, где вам это нужно, например
Route :: get ('someRoute', array ('uses' => 'HomeController @ getSomeRoute', 'middleware' => 'csrf'));
Для вашего случая, когда вам не нужен CORF-токен, он должен работать нормально.
Вам не нужно полностью переопределять токен CFSR из вашего приложения. В папке App / Http / Midlleware перейдите в VerifyCsrfToken.php и включите свой маршрут API в исключение следующим образом:
/** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'api/*', ];
* Показывает все маршруты внутри вашего API.