发布于 4年前

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

©2020 edoou.com   京ICP备16001874号-3