如何全局应用ThinkPHP的_AllowCrossDomain中间件以配置跨域请求?

2026-04-27 19:070阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计971个文字,预计阅读时间需要4分钟。

如何全局应用ThinkPHP的_AllowCrossDomain中间件以配置跨域请求?

中间件必须在全局中间件栈中注册,而不是只在某个特定路由或控制器中调用。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的_AllowCrossDomain中间件以配置跨域请求?

中间件必须在全局中间件栈中注册,而不是只在某个特定路由或控制器中调用。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,就会卡住。

阅读全文