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