jdesrosiers/silex-cors-provider

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

v1.6.1 2020-03-28 22:39 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: (字符串) 允许的域名集合(允许通配符,例如 http://*.example.com)。默认为所有。
  • cors.allowMethods: (字符串) 允许的HTTP方法集合。默认为所有。
  • cors.allowHeaders: (字符串) 允许的HTTP请求头集合。默认为所有。
  • cors.maxAge: (整数) CORS预检响应可以被缓存的秒数。默认为0。
  • cors.allowCredentials: (布尔值) 允许使用cookies吗?默认为false。
  • cors.exposeHeaders: (字符串) 允许暴露的头集合。默认为无。这不应该包括以下六个始终暴露的简单响应头: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