资讯专栏INFORMATION COLUMN

Laravel 5 通过中间件实现 JSON_UNESCAPED_UNICODE 和跨域控制

Baoyuan / 1574人阅读

摘要:在路由中引用中间件有关跨域控制的更多知识请访问访问控制。钻牛角尖如果需要对程序返回数据作统一加工,都可以通过实现更灵活的响应管理

做 json 接口的使用 JSON_UNESCAPED_UNICODE,能在返回大量非 ascii 字符数据的时候节约大量流量(其实就是把 uxxxx 转换成人能看懂的中文)。在 Laravel 框架里最易懂的办法就是用return response()->json($data, 200, [], JSON_UNESCAPED_UNICODE)返回接口数据。但是这种方法可复用性非常低,而且不太好处理 http 状态码问题。作为一个喜欢装牛逼的程序员,我需要研究一个看起来很牛逼的方法,我的目标是高复用、低耦合。

经过连续施展 Google 大法,遂得出以下方法:

1 php artisan make:middleware JsonCors建立中间件,然后在handle方法里加入下面的代码:

$data = $next($request);
if ($data instanceof IlluminateHttpJsonResponse) {
    $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" => AppHttpMiddlewareJsonCors::class,
然后在路由里引用test中间件即可。

3 在路由中引用中间件Route::middleware(["jsoncors"])

4 有关跨域控制的更多知识请访问HTTP访问控制(CORS)。

钻牛角尖:

如果需要对程序返回数据作统一加工,都可以通过middleware实现更灵活的响应管理?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30033.html

相关文章

  • 同源策略跨域方法

    摘要:同源策略的控制者是浏览器,浏览器可以控制不同域之间的资源的访问或相互操作,但不控制自己对不同域之间的资源的操作和访问。 同源与跨域 一般情况下,禁止一个域从另一个域读取数据,却可以使用某些从其他域拿到的资源。比如说,允许一个域执行、渲染、应用从其他域获取到的脚本、图片、样式;同样,一个域可以展示从其他域获取的内容,比如在frame中显示html文档。网络资源也可以选择性的让其他域来读取...

    魏宪会 评论0 收藏0
  • 如何基于 Notadd 构建 API (Laravel 写 API)

    摘要:例如,为前两个提供跨域的功能实现,代码参考如下控制器由于有了独立的处理器,控制器层可以制作简单处理,仅需向控制器注入,并由提供的辅助方法返回数据给前台,即可。 如何基于 Notadd 构建 API Notadd 底层实现了 passport 机制,有统一的授权管理,主要支持两种方式进行 API 授权,一个是 client,领一个是 passport,这个在其他文档中有做详细的说明。 这...

    megatron 评论0 收藏0
  • Laravel 开启跨域功能

    摘要:跨域的请求出于安全性的原因,浏览器会限制中的跨域请求。跨源共享标准需要浏览器和服务端共同配合才能完成,目前浏览器厂商已经可以将请求部分自动完成,所以跨源资源访问的重点还是在于服务器端。指明预请求或者跨域请求的来源。 跨域的请求 出于安全性的原因,浏览器会限制 Script 中的跨域请求。由于 XMLHttpRequest 遵循同源策略,所有使用 XMLHttpRequest 构造 HT...

    muzhuyu 评论0 收藏0
  • 【日常填坑】之ajax请求laravel的api接口

    摘要:合适和够用是最完美的追求。比如从页面去请求的资源。它允许浏览器向跨源服务器,发出请求,从而克服了只能同源使用的限制。定义在中的路由都是无状态的,并且会应用中间件组。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://www.linganm...

    Arno 评论0 收藏0
  • 【日常填坑】之ajax请求laravel的api接口

    摘要:合适和够用是最完美的追求。比如从页面去请求的资源。它允许浏览器向跨源服务器,发出请求,从而克服了只能同源使用的限制。定义在中的路由都是无状态的,并且会应用中间件组。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://www.linganm...

    neu 评论0 收藏0

发表评论

0条评论

Baoyuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<