Laravel中PUT请求返回CSRF token mismatch问题求助
解决Laravel API POST/PUT请求CSRF token mismatch问题
针对无前端、用Postman测试CRUD API遇到的CSRF验证报错问题,给你几个实用的解决办法:
方法一:将路由移至api.php(推荐)
Laravel的api.php路由默认被api中间件组包裹,该组自动跳过CSRF验证,是专门为API场景设计的:
- 把
web.php里的Route::resource('posts', PostController::class);移到api.php - 测试时请求路径改为
http://127.0.0.1:8000/api/posts
方法二:在CSRF中间件中排除指定路由
如果必须保留web.php里的路由,可修改VerifyCsrfToken中间件,让目标路由绕过CSRF验证:
- 打开
app/Http/Middleware/VerifyCsrfToken.php - 在
$except数组中添加你的路由规则,示例:
protected $except = [ 'posts/*', // 排除posts下所有子路由 // 也可指定单个请求:'posts/store', 'posts/update' ];
方法三:手动在Postman中携带CSRF Token(可选)
如果不想修改路由或中间件,也可以手动获取并携带Token:
- 先发送GET请求到
http://127.0.0.1:8000/posts,从响应Cookie中找到XSRF-TOKEN - 在Postman的请求头里添加
X-XSRF-TOKEN字段,值为刚才获取的Token内容
内容的提问来源于stack exchange,提问作者Dancro
相关产品推荐
相关产品推荐

