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跨域访问了。
 
             
             
             
             
            