亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中的CORS中間件

發布時間:2020-06-21 22:57:06 來源:億速云 閱讀:352 作者:鴿子 欄目:編程語言

在很早之前個人發布了一個 PHP CORS 中間件!最初的初衷是開發一個替代 barryvdh/laravel-cors 包的工具,這個包的缺點在于維護不夠,然后就是代碼量龐大,支持性也不多。當然也有優勢,首先專注于 Laravel 框架,然后 Satr 較多使用者較多。當然大多數用來放到 Laravel 中夠用。

優勢

PHP CORS Middleware 代碼量更少(核心代碼僅四個文件,每個文件拆分很精短),在 Laravel 中支持模式更多,首先就是常規的全站都附加跨域信息,然后是可選僅預檢,路由模式和匹配模式。有了這幾個模式支持,你可以指定特定路由跨域,也可以分配給組路透跨域等。

除了上述對 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.'
        ];
    }
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽库县| 桐梓县| 凉山| 新巴尔虎右旗| 望城县| 吐鲁番市| 新河县| 商都县| 乌兰察布市| 根河市| 图木舒克市| 绥德县| 龙泉市| 哈尔滨市| 呼图壁县| 潜山县| 军事| 登封市| 监利县| 桃园县| 郓城县| 遵义县| 丹阳市| 罗山县| 甘洛县| 保定市| 浮山县| 青州市| 望江县| 宁德市| 武平县| 垦利县| 奉新县| 民权县| 庐江县| 宝山区| 民丰县| 六枝特区| 临邑县| 兰溪市| 临夏县|