资讯专栏INFORMATION COLUMN

PHP 跨域中间件 v1.3.0 发布,新增 PSR-15 和 ThinkPHP 支持啦

XiNGRZ / 2435人阅读

摘要:然后使用在发送前进行拦截,并对其信息的处理的坑因为框架独占了请求的绑定以及跨域信息的判断处理,目前只能通过钩子拦截实现处理的中间件运行机制有问题,且无全局中间件机制。

什么是 PHP CORS

PHP CORS 是一个 PHP 跨域中间件,全名叫做 「PHP CORS Middleware」,专门用来处理基于 PHP 程序的 CORS 信息问题,主要针对在 PHP 程序中设置跨域信息的支持。

更新内容

增加 ThinkPHP 5 框架的支持

增加 PSR-15 中间件实例

在 ThinkPHP 5 框架中的使用

只要在 ThinkPHP 5 的项目中依赖 medz/cors 即可。

配置

在 ThinkPHP 框架中,配置没有什么可选你可以在 config 下面新建一个名为 cors.php 的文件,或者在某一个模块下面新建 cors.php 文件,甚至可以在全局公用配置或者模块公用配置中进行 cors 为 key 的配置,其中配置内容请参考 https://github.com/medz/cors#...

组件是如何支持 ThinkPHP 的

注入代码参考自 ThinkPHP 官方的拓展包,首先我们建立 src/ThinkPHP/injection.php 文件,然后在 composer.json 的 autoload 中使用 files 方式对该文件进行加载,代码如下:

make(Injecter::class);
    $injecter->register();
}, 	hinkContainer::getInstance());

为了不影响其他框架的使用,优先判断 ThinkPHP 5 的容器类是否存在,如果存在,执行 call_user_func,使用闭包进行包装,然后使用容器蛋里进行 Injector 实例。

使用的 ThinkPHP 5 钩子

在 ThinkPHP 5 中使用 app_init 钩子,作用是为了在框架读取模块和全局配置后进行 CORS 服务的单例处理注入到容器中。
然后使用 response_send 在 Response 发送前进行拦截,并对其 CORS 信息的处理!

ThinkPHP 5 的坑

因为框架独占了 OPTIONS 请求的绑定以及跨域信息的判断处理,目前只能通过 response_send 钩子拦截 Response 实现 CORS 处理!

ThinkPHP 5.1 的中间件运行机制有问题,且无全局中间件机制。所以无法通过中间件进行预处理!!!
PSR-15 实例

在组件中有一份 psr-15 的接口中间件实现代码,类名称叫做 MedzCorsPSRCorsMiddleware 你可以用于任何使用 PSR-15 的地方。

更多

项目 GitHub:https://github.com/medz/cors 欢迎 Satr! 谢谢!

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

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

相关文章

  • Swoft 框架 1.0 正式来袭,首个基于 Swoole 原生协程的 PHP 框架

    摘要:历时年多紧锣密鼓的开发,以及愉快而忙碌的春节假期,期间数从到快破,码云首页推荐,作者和社区的大力支持,正式版终于要和大家见面。此次更新新增了大量特性在易用性代码复用性能方面都有所提升。可以用于构建高性能的系统中间件基础服务等等。 历时 1 年多紧锣密鼓的开发,以及愉快而忙碌的春节假期,期间 github star 数从 500 到快破 1k,码云首页推荐,Swoole作者 Rango ...

    weij 评论0 收藏0
  • IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞

    摘要:介绍是基于开发的协程开发框架,拥有常驻内存协程异步非阻塞等优点。宇润我在年开发并发布了第一个框架,一直维护使用至今,非常稳定,并且有文档。于是我走上了开发的不归路 showImg(https://segmentfault.com/img/bVbcxQH?w=340&h=160); 介绍 IMI 是基于 Swoole 开发的协程 PHP 开发框架,拥有常驻内存、协程异步非阻塞IO等优点。...

    airborne007 评论0 收藏0
  • imi v1.0 正式版,专注单体应用的 PHP 协程应用开发框架

    摘要:年开发并发布框架现已停止维护。经过一年实战,年月日,一周年之际正式发布版本。宇润部分开源项目我已通过码云平台,向项目力所能及地捐款,聊表心意。所以,目前主打的还是单体应用开发。协议的开发,也是带来的一大优势。 imi 介绍 showImg(https://segmentfault.com/img/bVbuab9?w=291&h=187); imi 是基于 PHP 协程应用开发框架,它支...

    genefy 评论0 收藏0
  • v1.0.2 更新内容 本次更新涉及以下组件 hyperf/databasehyperf/dihyperf/eventhyperf/http-serverhyperf/loggerhyperf/redishyperf/contract Added 接入 Travis CI,目前 Hyperf 共存在 426 个单测,1124 个断言; #25 完善了对 Redis::connect 方法的...

    EsgynChina 评论0 收藏0
  • 开源 PHP 项目找队友、顾问、指导、贡献者等等

    摘要:三句话说完的话,完善文档和测试优化接口使之能无缝升级到第一个长期支持的,以及可能的话建立基础的社区。实际项目例子代码在目录目标版本暂时是你能帮上我的试用。 介绍站点还没做,先直接甩代码链接了 https://github.com/litphp/litphp Lit是什么? Lit是我一直在撸的个人框架,按第一次上传代码来说历史 超过4年 了,从还能支持PHP5.2的第一版开始一直(龟速...

    W_BinaryTree 评论0 收藏0

发表评论

0条评论

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