agungsugiarto / codeigniter4-cors
在CodeIgniter 4应用程序中发送CORS头。
Requires
- php: ^7.4 || ^8.0
- codeigniter4/framework: ^4.3
Requires (Dev)
- phpunit/phpunit: ^9.1
README
灵感来自https://github.com/asm89/stack-cors(适用于CodeIgniter 4)
关于
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-Token
或X-Requested-With
时,您必须将allowedHeaders
设置为包括那些头。您也可以将其设置为['*']
以允许所有自定义头。
注意:如果您明确列出白名单头,则必须包括
Origin
,否则请求将无法被识别为CORS。
选项
allowedOrigins
、allowedHeaders
和allowedMethods
可以设置为['*']
以接受任何值。
注意:对于
allowedOrigins
,当不使用通配符时,您必须包括方案,例如['http://example.com', 'https://example.com']
。您还必须考虑到在使用allowed_origins_patterns
时方案将存在。
注意:尽量具体。您可以从宽松的约束开始开发,但最好尽可能严格!
许可证
在MIT许可证下发布,请参阅LICENSE。