ThinkPHP5.1 Ajax跨域问题
之前在做三端分离的时候,做CMS
遇到了AJAX
跨域问题,现在将记录一下thinkphp5.1
的解决方法。
thinkphp
具体版本为5.1.36
首先在命令行切换到项目文件夹里,输入以下命令生成一个名称为CORS的中间件。
php think make:middleware CORS
生成的中间件位于 app\http\middleware\CORS.php
打开CORS.php
文件,键入以下代码
<?php
namespace app\http\middleware;
use think\facade\Request;
class CORS
{
public function handle($request, \Closure $next)
{
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: token,Origin, X-Requested-With, Content-Type, Accept');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE');
if (Request::isOptions()) {
return response('',200);
}
return $next($request);
}
}
接着需要注册中间件
我这里是在模块下创建middleware.php
的配置文件里,写入了以下配置
<?php
// +----------------------------------------------------------------------
// | 中间件配置
// +----------------------------------------------------------------------
return [
\app\http\middleware\CORS::class
];
控制器基类里面添加上middleware
<?php
namespace app\api\controller;
use think\Controller;
class BaseController extends Controller
{
protected $middleware = [
'CORS'
];
}
至此就可以使用ajax跨域访问了。