hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP教程 - 正文 请牢记本站网址www.sosophp.cn

专注于处置惩罚 PHP 跨域的 CORS 中间件 1.4.0 版本更新【php教程】

2019-11-26PHP教程搜搜PHP网47°c
A+ A-
专注于处置惩罚 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 版本更新的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
专注于处置惩罚 PHP 跨域的 CORS 中间件 1.4.0 版本更新【php教程】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: