Laravel 9对接银行门户回调时SameSite Cookie相关419错误求助
问题根源
当银行门户跨站重定向到你的回调地址时,浏览器因Cookie的SameSite属性为Lax/Strict而拒绝携带这些Cookie,导致Laravel无法验证CSRF令牌,从而返回419状态码。
解决方案
方案1:修改Session的SameSite属性为None
跨站请求需要将Cookie的SameSite设为None,同时必须开启Secure属性(仅HTTPS环境有效):
- 打开
config/session.php文件,修改以下配置:'same_site' => 'none', 'secure' => env('SESSION_SECURE_COOKIE', true), - 确保项目运行在HTTPS环境下(银行回调通常强制要求HTTPS)。
方案2:将回调路由排除在CSRF验证之外
如果回调接口不需要使用会话数据,可直接跳过CSRF验证:
- 打开
app/Http/Middleware/VerifyCsrfToken.php,在$except数组中添加你的回调路由:protected $except = [ '/sap/CallBack', // 替换为你的实际回调路由 ]; - 注意:此方案仅适用于完全信任银行回调请求的场景,需确保回调接口本身有其他验证机制(如签名校验)防止恶意请求。
内容的提问来源于stack exchange,提问作者Javad Heidarpour
相关产品推荐
相关产品推荐

