zmog/ slx-cors-provider
为silex添加CORS服务的silex服务提供商
资助包维护!
jdesrosiers
v2.0.1
2023-03-02 08:12 UTC
Requires
- zmog/slx: 4.0.0
Requires (Dev)
- phpunit/phpunit: 5.*
- symfony/browser-kit: 5.4.*
README
CorsServiceProvider为您的silex应用提供了作为中间件的CORS支持。CORS允许您跨域进行AJAX请求。CORS使用OPTIONS请求进行预检请求。由于silex默认没有处理OPTIONS请求的功能,此服务将遍历所有路由并生成必要的OPTIONS路由。
安装
使用composer安装silex-cors-provider。此项目使用语义化版本控制。
composer require jdesrosiers/silex-cors-provider "~1.0"
参数
- cors.allowOrigin: (string) 允许的域名集合,以空格分隔(允许通配符,例如http://*.example.com)。默认为所有。
- cors.allowMethods: (string) 允许的HTTP方法集合,以逗号分隔。默认为所有。
- cors.allowHeaders: (string) 允许的HTTP请求头集合,以逗号分隔。默认为所有。
- cors.maxAge: (int) CORS预检响应可以被缓存的秒数。默认为0。
- cors.allowCredentials: (boolean) 是否允许cookie?默认为false。
- cors.exposeHeaders: (string) 可以安全暴露的头的集合,以逗号分隔。默认为无。这不应包括以下六个始终暴露的简单响应头:
Cache-Control
、Content-Language
、Content-Type
、Expires
、Last-Modified
、Pragma
。
服务
- cors: 可以添加到应用程序的函数,作为中间件的后置中间件。(已弃用。请使用
cors-enabled
代替) - cors-enabled: 将此函数传递给应用程序、控制器集合或控制器,它将为对象定义的每个路由启用CORS支持。可选地,您可以将选项数组作为第二个参数传递。您可以传递的选项与
cors.*
参数相同,但不包含cors.
部分。如果您需要对不同的路由使用不同的配置,这非常有用。 - options: 与
cors-enabled
类似,但仅创建没有CORS支持的OPTIONS路由。 - allow: 可以添加到应用程序、控制器集合或控制器的函数,它将为对象定义的每个路由添加一个
Allow
头。
注册
$app->register(new JDesrosiers\Silex\Provider\CorsServiceProvider(), [ "cors.allowOrigin" => "http://petstore.swagger.wordnik.com", ]);
用法
将CORS功能添加到整个应用程序。
$app->get("/foo/{id}", function ($id) { /* ... */ }); $app->post("/foo/", function () { /* ... */ }); $app["cors-enabled"]($app);
将CORS功能添加到控制器集合。
$foo = $app["controllers_factory"]; $foo->get("/{id}", function () { /* ... */ }); $foo->post("/", function () { /* ... */ }); $app->mount("/foo", $app["cors-enabled"]($foo)); $app->get("/bar/{id}", function ($id) { /* ... */ }); // Not CORS enabled
将CORS功能添加到控制器。
$controller = $app->get("/foo/{id}", function ($id) { /* ... */ }); $app["cors-enabled"]($controller); $app->post("/foo/", function () { /* ... */ }); // Not CORS enabled