如何全局应用ThinkPHP的_AllowCrossDomain中间件以配置跨域请求?
- 内容介绍
- 文章标签
- 相关推荐
本文共计971个文字,预计阅读时间需要4分钟。
中间件必须在全局中间件栈中注册,而不是只在某个特定路由或控制器中调用。ThinkPHP+6 默认不启用中间件,需要在配置中进行设置。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 打开
app/middleware.php,把think\middleware\AllowCrossDomain::class加到数组开头(顺序重要,需早于业务中间件) - 别写成
'AllowCrossDomain'或AllowCrossDomain::class(少命名空间会报Class "AllowCrossDomain" not found) - 如果用了多应用模式,确认改的是当前应用的
middleware.php,不是根目录下的
为什么加了中间件还是被浏览器拦截 OPTIONS 预检请求
因为 AllowCrossDomain 默认只处理 Access-Control-Allow-Origin 和基础头,不自动响应 OPTIONS 方法。浏览器发预检时,若后端没返回 204 或 200,就会卡住。
本文共计971个文字,预计阅读时间需要4分钟。
中间件必须在全局中间件栈中注册,而不是只在某个特定路由或控制器中调用。ThinkPHP+6 默认不启用中间件,需要在配置中进行设置。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 打开
app/middleware.php,把think\middleware\AllowCrossDomain::class加到数组开头(顺序重要,需早于业务中间件) - 别写成
'AllowCrossDomain'或AllowCrossDomain::class(少命名空间会报Class "AllowCrossDomain" not found) - 如果用了多应用模式,确认改的是当前应用的
middleware.php,不是根目录下的
为什么加了中间件还是被浏览器拦截 OPTIONS 预检请求
因为 AllowCrossDomain 默认只处理 Access-Control-Allow-Origin 和基础头,不自动响应 OPTIONS 方法。浏览器发预检时,若后端没返回 204 或 200,就会卡住。

