找到 /www/wwwroot/your_project/thinkphp/helper.php 文件,将跨域检测代码注释掉:
// 注释掉这行 // check_cors_request();
在具体的 API 控制器中设置不需要登录验证:
<?php
namespace app\api\controller;
use app\common\controller\Api;
class YourController extends Api
{
// 设置不需要登录的方法
protected $noNeedLogin = ['*'];
// 设置不需要权限的方法
protected $noNeedRight = ['*'];
public function lists()
{
// 你的业务代码...
}
}
修改 /www/wwwroot/your_project/thinkphp/start.php:
// 在文件开头添加
if (strpos($_SERVER['REQUEST_URI'] ?? '', '/api/') !== false) {
header("Access-Control-Allow-Origin: https://your-frontend-domain.com");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, Cache-Control");
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
http_response_code(200);
exit();
}
}