leafs / cors
Leaf PHP CORS 配置
v1.1.1
2022-07-25 22:09 UTC
Requires
- leafs/http: *
README
Leaf Cors 模块
Leaf PHP
这是 Leaf 的 CORS 处理器。
安装
您可以使用 leaf cli 轻松安装
leaf install cors
或者使用 Composer
composer require leafs/cors
使用方法
安装 cors 模块后,cors 模块会自动链接到 leaf 应用,可以直接使用而无需在任何地方引用它。
简单使用(启用 所有 CORS 请求)
require __DIR__ . "/vendor/autoload.php"; $app = new Leaf\App; $app->cors(); $app->get('/products/{id}', function () use($app) { $app->response()->json(['message' => 'This is CORS-enabled for all origins!']); }); $app->run();
您还可以在上述示例中调用 Leaf\Http\Cors::config()
而不是 $app->cors()
。
配置 CORS
require __DIR__ . '/vendor/autoload.php'; $app = new Leaf\App; $app->cors([ 'origin' => 'http://example.com', 'optionsSuccessStatus' => 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 ]); $app->get('/products/{id}', function () use($app) { $app->response()->json(['message' => 'This is CORS-enabled for all origins!']); }); $app->run();
配置选项
origin
: 配置 Access-Control-Allow-Origin CORS 头部。可能的值String
- 将origin
设置为特定源。例如,如果您将其设置为"http://example.com"
,则仅允许来自 "http://example.com" 的请求。RegExp (字符串形式)
- 将origin
设置为正则表达式模式,该模式将用于测试请求源。如果匹配,则请求源将被反射。例如,模式'/example\.com$/'
将反射来自以 "example.com" 结尾的任何源的请求。Array
- 将origin
设置为有效源数组。每个源可以是String
或RegExp
。例如["http://example1.com", '/\.example2\.com$/']
将接受来自 "http://example1.com" 或来自 "example2.com" 子域的任何请求。Function
- 将origin
设置为实现一些自定义逻辑的函数。函数接受请求源作为第一个参数,并接受一个回调(作为callback(err, origin)
调用,其中origin
是origin
选项的非函数值)作为第二个参数。
methods
: 配置 Access-Control-Allow-Methods CORS 头部。期望一个逗号分隔的字符串(例如:'GET,PUT,POST')或一个数组(例如:['GET', 'PUT', 'POST']
)。allowedHeaders
: 配置 Access-Control-Allow-Headers CORS 头部。期望一个逗号分隔的字符串(例如:'Content-Type,Authorization')或一个数组(例如:['Content-Type', 'Authorization']
)。如果没有指定,默认为反射请求中指定的 Access-Control-Request-Headers 头部。exposedHeaders
: 配置 Access-Control-Expose-Headers CORS 头部。期望一个逗号分隔的字符串(例如:'Content-Range,X-Content-Range')或一个数组(例如:['Content-Range', 'X-Content-Range']
)。如果没有指定,则不暴露任何自定义头部。credentials
: 配置 Access-Control-Allow-Credentials CORS 头部。设置为true
以传递头部,否则省略。maxAge
: 配置 Access-Control-Max-Age CORS 头部。设置为整数以传递头部,否则省略。preflightContinue
: 将 CORS 预检响应传递给下一个处理器。optionsSuccessStatus
: 为成功的OPTIONS
请求提供状态码,因为一些旧版浏览器(IE11、各种智能电视)对204
响应有困难。
默认配置相当于
{ "origin": "*", "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", "allowedHeaders": "*", "exposedHeaders": "", "credentials": false, "maxAge": null, "preflightContinue": false, "optionsSuccessStatus": 204, }