palanik / corsslim
CORS (跨域资源共享) 中间件,适用于PHP Slim框架。
v1.1.0
2015-12-16 23:57 UTC
Requires
- slim/slim: >=2.4.0 <3.0
README
CORS (跨域资源共享) 中间件,适用于PHP Slim框架。
使用方法
Composer自动加载器
使用Composer安装
- 更新你的
composer.json
以要求palanik/corsslim
包。 - 运行
composer install
将CorsSlim添加到你的vendor文件夹。
{ "require": { "palanik/corsslim": "*" } }
自动加载
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $app->add(new \CorsSlim\CorsSlim()); ?>
自定义加载
<?php \Slim\Slim::registerAutoLoader(); $app = new \Slim\Slim(); require ('path_to_your_middlewares/CorsSlim.php'); $app->add(new \CorsSlim\CorsSlim()); ?>
选项
你可以使用自定义选项创建中间件。以关联数组形式传递选项。
origin
=> 为Access-Control-Allow-Origin
响应头设置值。默认值为'*'。exposeHeaders
=> 为Access-Control-Expose-Headers
响应头设置值。传递一个字符串数组。maxAge
=> 为Access-Control-Max-Age
响应头设置值。allowCredentials
=> 为Access-Control-Allow-Credentials
响应头设置值。传递True/False。allowMethods
=> 为Access-Control-Allow-Methods
响应头设置值。传递一个允许的方法名称数组。默认值是GET,HEAD,PUT,POST,DELETE
。allowHeaders
=> 为Access-Control-Allow-Headers
响应头设置值。传递一个允许的头部数组。
示例
$corsOptions = array( "origin" => "*", "exposeHeaders" => array("X-My-Custom-Header", "X-Another-Custom-Header"), "maxAge" => 1728000, "allowCredentials" => True, "allowMethods" => array("POST, GET"), "allowHeaders" => array("X-PINGOTHER") ); $cors = new \CorsSlim\CorsSlim($corsOptions);
白名单来源
设置一个允许的来源数组到origin
选项。如果找到匹配的请求来源,则使用它。
示例
$corsOptions = array( "origin" => array('http://one.allowed-origin.com', 'http://two.allowed-origin.com'), "exposeHeaders" => array("X-My-Custom-Header", "X-Another-Custom-Header"), "maxAge" => 1728000, "allowCredentials" => True, "allowMethods" => array("POST, GET"), "allowHeaders" => array("X-PINGOTHER") ); $cors = new \CorsSlim\CorsSlim($corsOptions);
路由中间件
新功能
你现在可以为单个路由选择性地启用cors。
使用静态方法routeMiddleware
创建并添加cors中间件到特定路由。
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $app->get('/item/:id', \CorsSlim\CorsSlim::routeMiddleware(), function ($name) use ($app) { ... } ); ?>
也可以使用自定义选项。
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $corsOptions = array("origin" => "*"); $app->get('/item/:id', \CorsSlim\CorsSlim::routeMiddleware($corsOptions), function ($name) use ($app) { ... } ); ?>
对于预检请求,为相应的路由提供OPTIONS
实现。
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $app->options('/item', \CorsSlim\CorsSlim::routeMiddleware(), function ($name) use ($app) {} ); $app->post('/item', \CorsSlim\CorsSlim::routeMiddleware(), function ($name) use ($app) { ... } ); ?>