leafs/cors

Leaf PHP CORS 配置

v1.1.1 2022-07-25 22:09 UTC

This package is auto-updated.

Last update: 2024-09-27 17:53:39 UTC


README



Leaf Cors 模块



Leaf PHP

Latest Stable Version Total Downloads License

这是 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 设置为有效源数组。每个源可以是 StringRegExp。例如 ["http://example1.com", '/\.example2\.com$/'] 将接受来自 "http://example1.com" 或来自 "example2.com" 子域的任何请求。
    • Function - 将 origin 设置为实现一些自定义逻辑的函数。函数接受请求源作为第一个参数,并接受一个回调(作为 callback(err, origin) 调用,其中 originorigin 选项的非函数值)作为第二个参数。
  • 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,
}