agungsugiarto/codeigniter4-cors

在CodeIgniter 4应用程序中发送CORS头。

v3.0.0 2023-02-18 07:33 UTC

This package is auto-updated.

Last update: 2024-09-18 11:41:15 UTC


README

灵感来自https://github.com/asm89/stack-cors(适用于CodeIgniter 4)

Latest Stable Version Total Downloads Latest Unstable Version License

关于

codeigniter4-cors包允许您使用Codeigniter4过滤器配置发送跨源资源共享头。

特性

  • 处理CORS预检OPTIONS请求
  • 将CORS头添加到响应中
  • 将路由与仅添加特定请求的CORS匹配

从2.x升级到v3.x

从版本2.x升级到3.x。打开您的composer.json文件,找到agungsugiarto/codeigniter4-cors并将其值更改为^3.0

安装

在您的composer.json中要求agungsugiarto/codeigniter4-cors包并更新您的依赖项

composer require agungsugiarto/codeigniter4-cors

全局使用

要允许所有路由的CORS,首先在App/Config/Filter.php类的$aliases属性顶部注册CorsFilter.php过滤器

public $aliases = [
    'cors' => \Fluent\Cors\Filters\CorsFilter::class,
    // ...
];

全局限制

通过编辑app/Config/Filters.php并添加它们到$filters数组来根据它们的URI模式限制路由,例如:

public $filters = [
    // ...
    'cors' => [
        'before' => ['api/*'],
        'after' => ['api/*']
    ],
];

限制单个路由

任何单个路由都可以通过将过滤器选项添加到任何路由定义方法中的最后一个参数来限制

$routes->get('api/users', 'UserController::index', ['filter' => 'cors']);

限制路由组

同样,可以在group()方法中限制整个路由组

$routes->group('api/v1', ['filter' => 'cors'], function ($routes) {
    // ...
});

配置

默认设置在config/cors.php中设置。发布配置以将文件复制到您自己的配置

php spark cors:publish

注意:当使用自定义头,如X-Auth-TokenX-Requested-With时,您必须将allowedHeaders设置为包括那些头。您也可以将其设置为['*']以允许所有自定义头。

注意:如果您明确列出白名单头,则必须包括Origin,否则请求将无法被识别为CORS。

选项

allowedOriginsallowedHeadersallowedMethods可以设置为['*']以接受任何值。

注意:对于allowedOrigins,当不使用通配符时,您必须包括方案,例如['http://example.com', 'https://example.com']。您还必须考虑到在使用allowed_origins_patterns时方案将存在。

注意:尽量具体。您可以从宽松的约束开始开发,但最好尽可能严格!

许可证

在MIT许可证下发布,请参阅LICENSE