Laravel怎么设置跨域Cookie_Laravel中间件设置SameSite属性【避坑】-Laravel

根本原因是浏览器SameSite策略升级:Chrome 80+默认将未声明SameSite的Cookie视为Lax,跨域请求下Lax阻止发送;SameSite=None必须配合Secure=true(HTTPS),且XSRF-TOKEN和session cookie均需显式设置。

为什么 Laravel 的跨域 Cookie 总是丢失

根本原因不是 Laravel 配置错了,而是浏览器对 SameSite 属性的强制策略升级 —— Chrome 80+ 默认把未声明 SameSite 的 Cookie 当作 SameSite=Lax,而跨域请求(比如前端在 http://localhost:3000 调用 https://api.example.com)下,Lax 会直接阻止 Cookie 发送。即使你开了 withCredentials: true,后端也设置了 Access-Control-Allow-Credentials: true,Cookie 还是不带。

Laravel 中间件里怎么正确设置 SameSite=None

不能只改 config/session.php 里的 'same_site' => 'none' —— 这只影响 session cookie,且 Laravel 7+ 才支持该配置项;更重要的是:Chrome 要求 SameSite=None 必须配合 Secure=true(即只在 HTTPS 下发送),否则直接忽略该设置,降级为 Lax。

  • config/session.php 中必须同时设:

    "secure" => env('SESSION_SECURE_COOKIE', true),
    "same_site" => 'none'
  • 开发环境(HTTP)无法真正使用 SameSite=None,浏览器会拒绝;本地调试建议用 ngrok 或 localhost(Chrome 对 localhost 有例外,允许 SameSite=None + Secure=false,但仅限开发)
  • 若需动态判断环境,可在中间件中手动覆盖响应头:
    return $next($request)->withCookie(cookie('XSRF-TOKEN')
    ->sameSite('None')
    ->secure(true));

跨域场景下 XSRF-TOKEN 和 session cookie 都要处理

很多人只改了 session cookie,却忽略了 Laravel 默认通过 XSRF-TOKEN Cookie + X-XSRF-TOKEN 请求头做 CSRF 防护。这个 Token 也是 Cookie,同样受 SameSite 限制。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Laravel怎么设置跨域Cookie_Laravel中间件设置SameSite属性【避坑】-Laravel
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4008064+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4008064+
  • 本周更新: 0+
  • 最后更新: 2026-03-16