palanik / corsslim
Cross-origin resource sharing (CORS) middleware for PHP Slim.
Installs: 366 759
Dependents: 5
Suggesters: 0
Security: 0
Stars: 93
Watchers: 8
Forks: 15
Open Issues: 4
pkg:composer/palanik/corsslim
Requires
- slim/slim: >=2.4.0 <3.0
README
Cross-origin resource sharing (CORS) Middleware for PHP Slim Framework.
Usage
Composer Autoloader
Install with Composer
- Update your
composer.jsonto requirepalanik/corsslimpackage. - Run
composer installto add CorsSlim your vendor folder.
{
"require": {
"palanik/corsslim": "*"
}
}
Autoloading
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $app->add(new \CorsSlim\CorsSlim()); ?>
Custom Load
<?php \Slim\Slim::registerAutoLoader(); $app = new \Slim\Slim(); require ('path_to_your_middlewares/CorsSlim.php'); $app->add(new \CorsSlim\CorsSlim()); ?>
Options
You can create the middleware with custom options. Pass options as associative array.
origin=> The value to set for Access-Control-Allow-Origin response header. Default value is '*'.exposeHeaders=> The value to set for Access-Control-Expose-Headers response header. Pass an array of strings.maxAge=> The value to set for Access-Control-Max-Age response header.allowCredentials=> The value to set for Access-Control-Allow-Credentials response header. Pass True/False.allowMethods=> The value to set for Access-Control-Allow-Methods response header. Pass an array of allowed method names. Default values areGET,HEAD,PUT,POST,DELETE.allowHeaders=> The value to set for Access-Control-Allow-Headers response header. Pass an array of allowed headers.
Example
$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);
Whitelisted Origins
Set an array of allowed origins to origin option. If a matching request origin found it is used.
Example
$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);
Route Middleware
New
You can now enable cors selectively for individual routes.
Use the static method routeMiddleware to create and add cors middleware to specific routes.
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $app->get('/item/:id', \CorsSlim\CorsSlim::routeMiddleware(), function ($name) use ($app) { ... } ); ?>
Also with custom options.
<?php require ('./vendor/autoload.php'); $app = new \Slim\Slim(); $corsOptions = array("origin" => "*"); $app->get('/item/:id', \CorsSlim\CorsSlim::routeMiddleware($corsOptions), function ($name) use ($app) { ... } ); ?>
For Preflighted requests, provide OPTIONS implementation for the corresponding routes.
<?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) { ... } ); ?>