1 跨域请求简介
后台接口模块 adminapi,用于对前后端分离项目提供接口服务,会涉及到跨域问题。
2.处理预检请求
跨域情况下,客户端先发送 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;
}
3.处理跨域请求
所有后台接口,都需要进行跨域处理,因此需要创建一个接口基础控制器类,然后在该基础控制器类中进行跨域处理,其他控制器类必须要继承接口基础控制器类,接口基础控制器类的初始化写法如下:
//初始化方法
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');
}