在线看片18_亚洲性吧_在线污_神马午夜达达兔_奇米色网_在线免费看污

onRequest 事件(即收到請(qǐng)求事件)

使用場(chǎng)景及原理

當(dāng) EasySwoole 收到任何的 HTTP 請(qǐng)求時(shí),均會(huì)執(zhí)行該事件。可以使用該事件可以對(duì) HTTP 請(qǐng)求全局?jǐn)r截,包括對(duì)請(qǐng)求進(jìn)行允許跨域等操作。

使用方式說(shuō)明

框架對(duì) onRequest 事件的實(shí)現(xiàn)在 3.4.x 及以后的版本 中做了新的改動(dòng),實(shí)現(xiàn)方式由原來(lái)舊版本在主服務(wù)創(chuàng)建事件(mainServerCreate 事件)中定義改變?yōu)樵?initialize 事件 中使用 Di 方式注入。目前最新穩(wěn)定版本框架(3.4.x),具體實(shí)現(xiàn)及使用方式 (在 EasySwooleEvent.php 中的 initialize 事件中注入) 如下:

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');

        // 實(shí)現(xiàn) onRequest 事件
        \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response): bool {
            ###### 對(duì)請(qǐng)求進(jìn)行攔截 ######
            // 不建議在這攔截請(qǐng)求,可增加一個(gè)控制器基類(lèi)進(jìn)行攔截
            // 如果真要攔截,判斷之后 return false; 即可
            /*
            $code = $request->getRequestParam('code');
            if (0){ // empty($code)驗(yàn)證失敗
                $data = array(
                    "code" => \EasySwoole\Http\Message\Status::CODE_BAD_REQUEST,
                    "result" => [],
                    "msg" => '驗(yàn)證失敗'
                );
                $response->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
                $response->withHeader('Content-type', 'application/json;charset=utf-8');
                $response->withStatus(\EasySwoole\Http\Message\Status::CODE_BAD_REQUEST);
                return false;
            }
            return true;
            */

            ###### 處理請(qǐng)求的跨域問(wèn)題 ######
            $origin = $request->getHeaderLine('origin') ?: '*';
            $response->withHeader('Access-Control-Allow-Origin', $origin);
            $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
            $response->withHeader('Access-Control-Allow-Credentials', 'true');
            $response->withHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, token');
            if ($request->getMethod() === 'OPTIONS') {
                $response->withStatus(\EasySwoole\Http\Message\Status::CODE_OK);
                return false;
            }

            return true;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

舊版本(3.4.x 之前版本)框架的 onRequest 事件的實(shí)現(xiàn)如下所示:

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        // TODO: Implement initialize() method.
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }

    // 注冊(cè) onRequest 事件回調(diào)
    public static function onRequest(Request $request, Response $response): bool
    {
        ###### 對(duì)請(qǐng)求進(jìn)行攔截 ######
        // 不建議在這攔截請(qǐng)求,可增加一個(gè)控制器基類(lèi)進(jìn)行攔截
        // 如果真要攔截,判斷之后 return false; 即可
        /*
        $code = $request->getRequestParam('code');
        if (0){ // empty($code)驗(yàn)證失敗
            $data = array(
                "code" => \EasySwoole\Http\Message\Status::CODE_BAD_REQUEST,
                "result" => [],
                "msg" => '驗(yàn)證失敗'
            );
            $response->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
            $response->withHeader('Content-type', 'application/json;charset=utf-8');
            $response->withStatus(\EasySwoole\Http\Message\Status::CODE_BAD_REQUEST);
            return false;
        }
        return true;
        */

        ###### 處理請(qǐng)求的跨域問(wèn)題 ######
        $origin = $request->getHeaderLine('origin') ?: '*';
        $response->withHeader('Access-Control-Allow-Origin', $origin);
        $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
        $response->withHeader('Access-Control-Allow-Credentials', 'true');
        $response->withHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, token');
        if ($request->getMethod() === 'OPTIONS') {
            $response->withStatus(\EasySwoole\Http\Message\Status::CODE_OK);
            return false;
        }
        return true;
    }
}

注意事項(xiàng)

若在該事件中,執(zhí)行 $response->end(),則該次請(qǐng)求不會(huì)進(jìn)入路由匹配階段。

主站蜘蛛池模板: 久久久久久久网站 | 青青草精品视频 | 51成人做爰www免费看网站 | 久久精品99国产精品日本 | 欧美日本在线 | 浪漫樱花在线观看高清动漫 | 国产自产在线 | 欧美午夜剧场 | 福利视频一区 | 日韩精品在线观看免费 | 自拍偷拍av | 亚洲天堂男人的天堂 | 97潮色 | 做爰视频毛片视频 | 一级生活毛片 | 一级特黄av | 91精品视频网站 | av爱爱爱 | 亚洲午夜av久久乱码 | 久操视屏 | 丁香激情五月 | 淫亚洲 | 亚洲人成在线免费观看 | 成人久久综合 | 亚洲美女在线视频 | 啪啪大秀视频免费观看 | 综合激情亚洲 | 国产夫绿帽单男3p精品视频 | 亚洲成人少妇 | 二区三区在线视频 | 国产综合在线播放 | 最新久久 | 国产a网站 | 超碰男人的天堂 | 黄色在线观看网址 | 国产精久久一区二区三区 | 亚洲免费专区 | 中文字幕播放 | 成人性生交大片免费 | 欧美精品999 | 日韩a在线 |