zmog/slx-cors-provider

为silex添加CORS服务的silex服务提供商

资助包维护!
jdesrosiers

安装: 260

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 25

v2.0.1 2023-03-02 08:12 UTC

README

Build Status Scrutinizer Code Quality Code Coverage

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-ControlContent-LanguageContent-TypeExpiresLast-ModifiedPragma

服务

  • 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