当前位置: 首页 > 后端技术 > PHP

Laravel5通过中间件实现了JSON_UNESCAPED_UNICODE和跨域控制

时间:2023-03-30 06:16:53 PHP

使用JSON_UNESCAPED_UNICODE作为json接口,在返回大量非ascii字符数据时可以节省很多流量(其实就是把\uxxxx转换成人们能看懂的中文)。在Laravel框架中最容易理解的就是使用returnresponse()->json($data,200,[],JSON_UNESCAPED_UNICODE)返回接口数据。但是这种方法的复用性很低,并且不容易处理http状态码问题。作为一个喜欢装牛逼的程序员,我需要研究一个看起来牛逼的方法。我的目标是高重用和低耦合。不断使用google方法,得到如下方法:1phpartisanmake:middlewareJsonCors创建中间件,然后在handle方法中加入如下代码:$data=$next($request);if($datainstanceof\Illuminate\Http\JsonResponse){$data->setEncodingOptions(JSON_UNESCAPED_UNICODE);//下面是跨域控制代码$data->withHeaders(['Access-Control-Allow-Origin'=>'*','Access-Control-Allow-Credentials'=>'true',]);}return$data;2修改app/Http/Kernel.php,在protected$routeMiddleware数组中加入'jsoncors'=>\App\Http\Middleware\JsonCors::class,然后在route中引用测试中间件。3参考路由中的中间件Route::middleware(['jsoncors'])4关于跨域控制的更多信息,请访问HTTPAccessControl(CORS)。钻牛角尖:如果需要统一处理程序返回的数据,可以使用中间件实现更灵活的响应管理?