Ionic应用对接Laravel后端安卓端请求报419 token mismatch错误
问题根因定位
你遇到的419 token mismatch 错误是Laravel框架的CSRF(跨站请求伪造)令牌校验失败导致的,和CORS没有直接关联:CORS错误通常会被浏览器直接拦截,不会返回419状态码。你在Postman中请求正常大概率是因为Postman发起的是GET请求,Laravel默认不对GET/HEAD/OPTIONS请求做CSRF校验,安卓端发起的是POST/PUT等非GET请求才触发了校验逻辑。
排查解决步骤
- 第一步:确认路由分组配置
前后端分离的API接口请统一放到routes/api.php文件中定义,该路由组默认不加载CSRF校验中间件,路由前缀自动为/api/,如果你的接口之前写在routes/web.php中,迁移后即可解决问题。 - 第二步:如果必须保留在web路由组中,二选一处理即可
- 跳过指定接口的CSRF校验:打开
app/Http/Middleware/VerifyCsrfToken.php,将你的接口路径添加到$except数组中:
protected $except = [ '你的接口路径', '同前缀接口/*' // 支持通配符批量匹配 ];- 安卓端请求携带正确CSRF令牌:
- Ionic的请求配置中开启
withCredentials: true,允许跨域请求携带Cookie - 从Laravel返回的Cookie中取出
XSRF-TOKEN的值,添加到请求头的X-XSRF-TOKEN字段中即可通过校验
- 跳过指定接口的CSRF校验:打开
- 第三步:检查API认证逻辑
如果你使用的是Laravel Sanctum做API认证,请确认安卓端请求头的Authorization字段格式为Bearer 你的用户令牌,令牌缺失或格式错误也可能触发会话校验异常返回419。
内容的提问来源于stack exchange,提问作者Dixit
相关产品推荐
相关产品推荐

