drewlabs / cors
HTTP Cors 请求处理器
v0.2.0
2023-05-21 13:32 UTC
Requires
- php: ^7.1|^8.0
- psr/http-message: ^1.0|^2.0
Requires (Dev)
- nyholm/psr7: ^1.0
- nyholm/psr7-server: ^1.0
- phpunit/phpunit: ^9.0
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();
注意 上面的示例使用了默认构造函数,该函数使用默认配置值创建实例,不允许任何 header
或 host
。要自定义默认配置,构造函数接受一个配置字典(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());