| 跨域情况下,客户端先发送options预检请求,接口服务端需要对预检请求进行处理。 在入口文件 public/index.php中,增加代码如下: //处理跨域预检请求
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
    //允许的源域名
    header("Access-Control-Allow-Origin: *");
    //允许的请求头信息
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
    //允许的请求类型
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
    exit;
}
 所有后台接口,都需要进行跨域处理。 创建接口基础控制器类:项目目录下,执行以下命令 php think make:controller adminapi/BaseApi --plain
 控制器文件 application/adminapi/controller/BaseApi.php中 创建初始化方法 _initialize() //初始化方法
public function _initialize()
{
    parent::_initialize();
    //允许的源域名
    header("Access-Control-Allow-Origin: *");
    //允许的请求头信息
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
    //允许的请求类型
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
}
 接口响应数据格式,统一约定为 包含code 、msg、data 三个字段的 json字符串。 在BaseApi控制器中,定义快速响应数据的方法如下: 	/**
     * 通用响应
     * @param int $code 错误码
     * @param string $msg 错误描述
     * @param array $data 返回数据
     */
    public function response($code=200, $msg='success', $data=[])
    {
        $res = [
            'code' => $code,
            'msg' => $msg,
            'data' => $data
        ];
       
        json($res)->send();die;
    }
 |