Cross-origin resource sharing (CORS) Middleware for PHP Slim Framework.
Install with Composer
- Update your
composer.jsonto requirepalanik/corsslimpackage. - Run
composer installto add CorsSlim your vendor folder.
{
"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());
?>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.
$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);Set an array of allowed origins to origin option. If a matching request origin found it is used.
$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);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) {
...
}
);
?>