专注于处置 PHP 跨域的 CORS 中间件 1.4.0 版本更新
在很早此前个人公布了一个 PHP CORS 中心件!最初的初衷是开发一个替换 barryvdh/laravel-cors 包的工具,这个包的缺陷在于保护不足,然后就是代码量巨大,支撑性也不多。当然也有优势,第一专心于 Laravel 框架,然后 Satr 较多使用者较多。当然大多数用来放到 Laravel 中够用。
优势
PHP CORS Middleware 代码量更少(中心代码仅四个文件,每个文件拆分很精短),在 Laravel 中支撑模式更多,第一就是常规的全站都附加跨域信息,然后是可选仅预检,路由模式和匹配模式。有了这几个模式支撑,你可以指定特定路由跨域,也可以分配给组路透跨域等。
引荐:《PHP教程》
除了上述对 Laravel 支撑外,还很好了支撑以下方式:
● PHP 原生数组,可以使用数组来停止跨域响应头信息的接收,开发者可以自在处置。
● 支撑 PSR-7 的恳求和响应
● 支撑 PSR-15 中心件
● 支撑 Laravel/Lumen 框架
● 支撑 Swoft 框架
● 支撑 Slim 框架
● 支撑 ThinkPHP 5 框架
缺陷
支撑了太多的框架,假如你仅在 Laravel 使用,代码包中还包括了其他框架的支撑代码,但是总量非常低,代码强迫症者大概受不了,余外的支撑代码只要在对应框架中才会生效和被加载。
本次版本更新内容
随着 PSR-15 的不乱,针对 PSR-15 中心件接口停止了重构。可以愈加利便的配置 CORS 信息
增添 Swoft 框架支撑见?
https://github.com/medz/cors/issues/6
本次更新内容的详细使用
PSR-15 中心件
先创立一个实例:
use Medz\Cors\PSR\CorsMiddleware; // Settings. $settings = [ 'allow-credentials' => false, 'allow-headers' => ['*'], 'expose-headers' => [], 'origins' => ['*'], 'methods' => ['*'], 'max-age' => 0, ]; // $cors = new Medz\Cors\Cors($settings); // Create CORS instance. // Create CORS middleware instance $middleware = new CorsMiddleware($settings /* $cors */ /* , true */ /* 可否仅处置预检 */); // TODO.
可以看出,新版本可以直接从中心件结构参数停止传递设定了,此前版本必需传递一个 Medz\Cors\Cors 实例,当然,新版本也可以直接传递实例。第二个参数可以停止配置可否仅处置预检恳求,默许是处置全部恳求。
Swoft 中心件
在配置文件 config/properties/app.php 中停止如下配置:
'components' => [ 'custom' => [ 'Medz\\Cors\\Swoft\\', ], ], 'cors' => [ 'onlyPreflight' => false, // 可否仅 OPTIONS 预检恳求才停止跨域信息附加 'settings' => [ /// ... 参照 README 中的 PSR-7 ], ],
全局使用
翻开 app/config/beans/base.php 配置如下:
'serverDispatcher' => [ 'middlewares' => [ \Medz\Cors\Swoft\CorsMiddleware::class, ], ],
通过注解使用
通过 @Middleware 和 @Middlewares, 可以很利便的配置中心件到当前的 Controller 和 Action 内。
● 当将此注解利用于 Controller 上,则作用域为整个 Controller
● 将此注解利用于 Action 上,则作用域仅为当前的 Action
use Swoft\Http\Server\Bean\Annotation\Controller; use Swoft\Http\Message\Bean\Annotation\Middleware; use Swoft\Http\Server\Bean\Annotation\RequestMapping; use Medz\Cors\Swoft\CorsMiddleware; /** * Setting Controller middleware. * * @Controller("middleware") * @Middleware(CorsMiddleware::class) */ class CorsOneController { // } /** * Setting Action middleware. */ class CorsTwoController { /** * @RequestMapping() * @Middleware(CorsMiddleware::class) */ public function corsAction(): array { return [ 'message' => 'The action using CORS.' ]; } }
其他
CORS 项目地址 https://github.com/medz/cors ,假如喜爱,欢迎 Star 欢迎 Issues 欢迎 PR。
Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设定跨域需求。
以上就是专心于处置 PHP 跨域的 CORS 中心件 1.4.0 版本更新的具体内容,更多请关注百分百源码网其它相关文章!