You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Sanctum 本地模拟子域名环境Cookie无法正常存储问题求助

解决方案
  • 修正本地访问入口:本地开发不要使用localhost:8080访问前端,必须使用你配置的子域名入口,例如companyone.mydomain.com:8080,保证当前页面域名和Cookie要写入的域名匹配。
  • 调整Sanctum状态域配置:修改.env文件的SANCTUM_STATEFUL_DOMAINS,需要补全所有带端口的前端访问域名,示例配置:
SESSION_DOMAIN=.mydomain.com
SANCTUM_STATEFUL_DOMAINS=mydomain.com:8080,companyone.mydomain.com:8080,companytwo.mydomain.com:8080
  • 适配本地开发的Cookie参数:本地开发走HTTP协议,而SameSite=None要求必须配合Secure=true且运行在HTTPS环境下,HTTP场景下无法生效,修改Cookie基础配置:
// 本地开发环境配置,线上HTTPS环境按需调整回原配置
$domain = '.mydomain.com';
$secure = false;
$httpOnly = true;
$sameSite = 'lax';
  • 修正前端代理与请求配置
    1. 调整vue.config.js的代理配置,开启changeOrigin保证请求头host正确传递:
module.exports = {
    devServer: {
        disableHostCheck: true,
        proxy: {
            '/api': { // 按你实际的接口前缀调整
                target: 'http://localhost:8000',
                changeOrigin: true,
            }
        },
    },
};
  1. 全局配置axios开启凭证携带:
axios.defaults.withCredentials = true;
  • 修正后端CORS配置:打开config/cors.php,确保以下配置正确:
return [
    'paths' => ['api/*', 'sanctum/csrf-cookie'], // 覆盖你所有需要跨域的接口路径
    'supports_credentials' => true,
    'allowed_origins' => ['*'], // 线上环境建议替换为实际的业务域名
    'allowed_headers' => ['*'],
    'allowed_methods' => ['*'],
];

配置完成后清空浏览器现有Cookie,重启前后端服务,重新用子域名入口访问即可生效。

内容的提问来源于stack exchange,提问作者Thore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 05:27:02