正在很早以前集体公布了一个 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 版本更新的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 PHP 跨域
抱歉,评论功能暂时关闭!