在ThinkPHP 6中,解决跨域问题的一种方法是使用全局中间件来处理跨域请求。以下是一个创建全局中间件来解决跨域问题的示例代码:
首先,创建一个中间件类文件,例如Cors.php
:
// application/middleware/Cors.php
namespace app\middleware;
class Cors
{
public function handle($request, \Closure $next)
{
$response = $next($request);
// 添加跨域的Headers
$response->header([
'Access-Control-Allow-Origin' => '*', // 允许任何源
'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers' => 'Content-Type, Accept, Authorization, X-Requested-With, Origin, X-CSRF-Token',
]);
// 如果为OPTIONS请求,直接返回
if (strtoupper($request->method()) == "OPTIONS") {
return $response;
}
// 继续处理其他请求
return $response;
}
}
然后,在全局中间件配置文件中注册这个中间件。编辑application/middleware.php
文件:
// application/middleware.php
return [
// 其他中间件
\app\middleware\Cors::class
];
这样,你的ThinkPHP 6应用程序就会自动为每个响应添加跨域头部,允许跨域请求。注意,在生产环境中,你应该将Access-Control-Allow-Origin
设置为特定的域名,以提高安全性。