如何设置ThinkPHP中的CORS跨域请求?

2026-05-07 04:190阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

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

如何设置ThinkPHP中的CORS跨域请求?

ThinkPHP 6 简介:

路由级 allowCrossDomain() 怎么用才有效

这是 ThinkPHP 6 官方推荐、最轻量也最可控的方式,只对指定 API 路由生效,不污染其他逻辑。

  • 必须在 route/app.php 中定义 HTTP/HTTPS 路由后链式调用:->allowCrossDomain(),写在闭包里或漏掉链式调用都会失效
  • 不传参默认设 Access-Control-Allow-Origin: *;要指定来源,传数组:->allowCrossDomain(['https://admin.example.com', 'http://localhost:3000'])
  • 前端带 Cookie 或 Authorization 头时,第二个参数必须为 true->allowCrossDomain(['https://example.com'], true),否则浏览器静默拦截
  • 该方法对 consoleevent 类路由无效,别试图用它处理命令行任务

CorsMiddleware 中 OPTIONS 预检怎么不报 405

全局中间件里只加响应头是错的,90% 的跨域失败都卡在 OPTIONS 请求没被正确响应。

阅读全文

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

如何设置ThinkPHP中的CORS跨域请求?

ThinkPHP 6 简介:

路由级 allowCrossDomain() 怎么用才有效

这是 ThinkPHP 6 官方推荐、最轻量也最可控的方式,只对指定 API 路由生效,不污染其他逻辑。

  • 必须在 route/app.php 中定义 HTTP/HTTPS 路由后链式调用:->allowCrossDomain(),写在闭包里或漏掉链式调用都会失效
  • 不传参默认设 Access-Control-Allow-Origin: *;要指定来源,传数组:->allowCrossDomain(['https://admin.example.com', 'http://localhost:3000'])
  • 前端带 Cookie 或 Authorization 头时,第二个参数必须为 true->allowCrossDomain(['https://example.com'], true),否则浏览器静默拦截
  • 该方法对 consoleevent 类路由无效,别试图用它处理命令行任务

CorsMiddleware 中 OPTIONS 预检怎么不报 405

全局中间件里只加响应头是错的,90% 的跨域失败都卡在 OPTIONS 请求没被正确响应。

阅读全文