palanik/corsslim

CORS (跨域资源共享) 中间件,适用于PHP Slim框架。

v1.1.0 2015-12-16 23:57 UTC

This package is auto-updated.

Last update: 2024-09-24 12:59:49 UTC


README

CORS (跨域资源共享) 中间件,适用于PHP Slim框架

Latest Stable Version Build Status License

使用方法

Composer自动加载器

使用Composer安装

  1. 更新你的composer.json以要求palanik/corsslim包。
  2. 运行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());
?>

选项

你可以使用自定义选项创建中间件。以关联数组形式传递选项。

示例

$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) {
            ...
          }
        );

?>

许可证

MIT