ThinkPHP6解决跨域问题 - 中间件设置

时间:2025-02-28 07:54:00

第一种方法

在前后端分离项目中,如通过ThinkPHP6开发api,涉及前端调用跨域问题,可通过自带的跨域中间件解决。
在 ./app/ 文件中启用内置中间件即可 

<?php
// 全局中间件定义文件
return [
    \think\middleware\AllowCrossDomain::class
];
<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
    // \think\middleware\SessionInit::class
    \think\middleware\AllowCrossDomain::class,
];

等同于原生PHP中下面几行代码的效果。

<?php
    header('Content-Type: text/html;charset=utf-8');
    header('Access-Control-Allow-Origin:*'); 
    header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE');
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin');

第二种方法 某个路由或分组支持跨域 参见 官方文档

跨域请求 :/manual/thinkphp6_0/1037507

在路由上添加  ->allowCrossDomain() 即可

Route::get('new/:id', 'News/read')
    ->ext('html')
    ->allowCrossDomain();