Laravel 11未新增域名限制机制,但三处关键调整影响域名相关逻辑:1. Sanctum stateful白名单改由APP_URL动态判定,config/sanctum.php中stateful配置被移除;2. SESSION_DOMAIN不再自动推导,设为null将导致跨子域Session失效;3. CORS allowed_origins不支持通配符子域语法,凭据请求必须精确匹配完整域名。

Laravel 11 在“域名限制配置”上没有专门的、独立命名的“域名限制”机制,也没有针对域名(如 APP_URL、SESSION_DOMAIN、CORS 域名白名单等)引入破坏性变更。但与 Laravel 10 相比,多个原本由域名参与控制的功能在配置位置、默认行为或作用方式上发生了关键调整,这些调整可能间接导致“域名相关逻辑失效”——尤其当开发者沿用旧配置习惯时。
以下是实际影响开发和部署的三类核心变化:
1. Sanctum 的 stateful 域名白名单从 config/sanctum.php 移至环境驱动逻辑
Laravel 10 中,config/sanctum.php 的 'stateful' => ['localhost', '127.0.0.1'] 是硬编码白名单,直接决定哪些域名可携带 Session 访问 /api/*。
Laravel 11 中:
-
stateful配置项已被移除 - 判定逻辑完全交由
Sanctum::stateful()方法动态执行,默认行为是:- 若请求 Host 匹配
APP_URL的 host 部分(不含协议和端口),且APP_URL不为空,则视为 stateful - 否则 fallback 到
$_SERVER['HTTP_ORIGIN']或$_SERVER['HTTP_REFERER']的 host(需启用 CORS 中间件)
- 若请求 Host 匹配
- 实际效果:你不能再靠改
config/sanctum.php控制白名单;必须确保APP_URL正确(如https://api.example.com),或手动重写Sanctum::stateful()闭包
2. SESSION_DOMAIN 默认不再自动推导,且强制要求显式设置
Laravel 10 允许 SESSION_DOMAIN=null,框架会尝试根据 APP_URL 自动提取主域名(如 APP_URL=https://app.example.com → SESSION_DOMAIN=.example.com)。
Laravel 11 中:
-
SESSION_DOMAIN必须显式配置为字符串或 null - 若设为
null,框架不再自动推导,而是直接使用空字符串,导致跨子域 Session 失效 - 推荐做法:在
.env中明确写SESSION_DOMAIN=.example.com(注意开头的点号)
3. CORS 配置语义升级,origin 白名单不再接受通配符 + 子域模糊匹配
Laravel 10 使用 fruitcake/laravel-cors 包,其 config/cors.php 支持 'allowed_origins' => ['*'] 或 ['https://*.example.com']。
Laravel 11 默认集成 laravel/sanctum 的轻量 CORS 支持,并弃用 fruitcake/laravel-cors(除非你主动保留):
-
config/cors.php仍存在,但allowed_origins不支持通配符子域语法(如https://*.example.com会被拒绝) - 只接受完整域名列表(如
['https://app.example.com', 'https://admin.example.com'])或['*'](仅限非凭据请求) - 若需凭据(cookies/session),
allowed_origins不能为*,且必须与前端实际 origin 完全一致
这些变化不是“加了新功能”,而是收紧了隐式行为、移除了容错路径、把控制权从配置文件转移到代码逻辑或环境变量。旧项目升级后若未同步调整,常见表现包括:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 登录成功但后续 API 请求提示 “Unauthenticated”(Sanctum stateful 判定失败)
- 子域间无法共享登录态(
SESSION_DOMAIN未显式设置) - 前端跨域请求被拦截,即使
cors.php写了*.example.com(通配符不生效)
不复杂但容易忽略——域名相关配置不再是“写对就行”,而是要和 APP_URL、部署结构、前端请求 origin 三者严格对齐。










