专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新-php教程

资源魔 27 0
专一于解决 PHP 跨域的 CORS 两头件 1.4.0 版本更新,增加了 Swoft 框架支持

正在很早以前集体公布了一个 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 跨域

抱歉,评论功能暂时关闭!