drewlabs/cors

HTTP Cors 请求处理器

v0.2.0 2023-05-21 13:32 UTC

This package is auto-updated.

Last update: 2024-09-21 16:13:39 UTC


README

这个库为基于 Psr7 请求的 PHP 项目提供了 HTTP Cors 处理器。

使用方法

默认实例

该库提供了一个默认实例,可以通过其构造方法创建。

use Drewlabs\Cors\Cors;

$cors = new Cors();

注意 上面的示例使用了默认构造函数,该函数使用默认配置值创建实例,不允许任何 headerhost。要自定义默认配置,构造函数接受一个配置字典(PHP 数组)作为参数。

  • 接受特定的源或主机列表

下面的示例配置了 cors 实例,只接受来自 https://:3000 的请求作为源。

use Drewlabs\Cors\Cors;

$cors = new Cors([ 'allowed_hosts' => 'https://:3000', 'allowed_headers' => ['*'], 'allowed_methods' => ['*'] ]);

注意 上面的示例配置了 cors,允许来自 https://:3000 的请求,使用 any 头和 any 方法。

使用配置构建器

为了避免打字错误,该库提供了一个流畅的构建器实例来构建配置值。

use Drewlabs\Cors\Cors;
use Drewlabs\Cors\ConfigurationBuilder;

$cors = new Cors(
    ConfigurationBuilder::new()
        // Add `Origin: https://` header
        ->withHosts('https://', 'https://:3000')
        // Add an `allowed_credentials: yes` header
        ->withCredentials()
        ->withMaxAge(0)
        // Add an `Access-Control-Allow-Methods: POST` header configuration value
        ->withMethods('POST')
        // Convert the builded configuration to array
        ->toArray()
);

处理 Psr 请求

该库提供了一个 handleRequest 方法来处理兼容 PSR7 的请求。

use Drewlabs\Cors\Cors;

$cors = new Cors();

$cors->handleRequest(new Request());

检查请求是否为 cors 请求

有时你可能想确认请求是否有 Origin 头,并且是一个 cors 请求(即请求方法具有等于 OPTION 的值)。

use Drewlabs\Cors\Cors;
use Drewlabs\Cors\ConfigurationBuilder;

$cors = new Cors(
    ConfigurationBuilder::new()
        // Add `Origin: https://` header
        ->withHosts('*')
        // Convert the builded configuration to array
        ->toArray()
);

// Checks if the Psr request is a cors request
$cors->isCorsRequest(new Request());