rabp99/cakephp-cors

该软件包的最新版本(v3.0.2)没有可用的许可证信息。

一个用于在您的应用程序中激活cors域的CakePHP 4插件

维护者

详细信息

github.com/rabp99/cakephp-cors

源代码

安装次数: 11,754

依赖者: 0

建议者: 0

安全性: 0

星标: 4

关注者: 0

分支: 31

类型:cakephp-plugin

v3.0.2 2022-02-27 23:19 UTC

This package is auto-updated.

Last update: 2024-09-28 04:51:21 UTC


README

Build Status

一个用于在您的应用程序中使用中间件激活cors域的CakePHP (4+) 插件。

了解CORS的更多信息

对于cake 3.3+,请使用cake-3分支

要求

  • PHP版本7.2或更高
  • CakePhp 4.0或更高

安装

您可以使用composer将此插件安装到您的CakePHP应用程序中。

安装composer包的推荐方式是

composer require rabp99/cakephp-cors

快速入门

加载插件

// In src/Application.php
public function bootstrap(): void
{
    // code ...
    $this->addPlugin('Cors');
}

默认情况下,该插件授权所有源、所有方法和所有头部的cors,并缓存一天。

配置

默认配置

<?php
[
    'AllowOrigin' => true, // accept all origin
    'AllowCredentials' => true,
    'AllowMethods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'], // accept all HTTP methods
    'AllowHeaders' => true, // accept all headers
    'ExposeHeaders' => false, // don't accept personal headers
    'MaxAge' => 86400, // cache for 1 day
    'exceptionRenderer' => 'Cors\Error\AppExceptionRenderer', // Use ExeptionRenderer class of plugin

更改配置

app.php中添加

'Cors' => [
    // My Config
]

允许源(Access-Control-Allow-Origin

返回的资源可能有一个Access-Control-Allow-Origin头,其语法如下

'Cors' => [
    // Accept all origins
    'AllowOrigin' => true,
    // OR
    'AllowOrigin' => '*',

    // Accept one origin
    'AllowOrigin' => 'http://flavienbeninca.fr'

    // Accept many origins
    'AllowOrigin' => ['http://flavienbeninca.fr', 'http://google.com']
]

允许证书(Access-Control-Allow-Credentials

Access-Control-Allow-Credentials头指示当证书标志为true时,是否可以暴露对请求的响应。当用作对预检请求的响应的一部分时,这表示是否可以使用证书进行实际请求。请注意,简单的GET请求不会被预检,因此如果对带有证书的资源发出请求,并且此头不与资源一起返回,则浏览器会忽略该响应,并将其不返回给网络内容。

'Cors' => [
    'AllowCredentials' => true,
    // OR
    'AllowCredentials' => false,
]

允许方法(Access-Control-Allow-Methods

'Cors' => [
    // string
    'AllowMethods' => 'POST',
    // OR array
    'AllowMethods' => ['GET', 'POST'],
]

允许头部(Access-Control-Allow-Headers

Access-Control-Allow-Headers头用于对预检请求的响应中指示,在实际请求中可以使用哪些HTTP头部。

'Cors' => [
    // accept all headers
    'AllowHeaders' => true,

    // accept just authorization
    'AllowHeaders' => 'authorization',

    // accept many headers
    'AllowHeaders' => ['authorization', 'other-header'],
]

暴露头部(Access-Control-Expose-Headers

Access-Control-Expose-Headers头允许服务器将浏览器允许访问的头部列入白名单。例如

'Cors' => [
    // nothing
    'ExposeHeaders' => false,

    // string
    'ExposeHeaders' => 'X-My-Custom-Header',

    // array
    'ExposeHeaders' => ['X-My-Custom-Header', 'X-Another-Custom-Header'],
]

最大年龄(Access-Control-Max-Age

Access-Control-Max-Age头指示预检请求的结果可以缓存多长时间。有关预检请求的示例,请参阅上面的示例。

'Cors' => [
    // no cache
    'MaxAge' => false,

    // 1 hour
    'MaxAge' => 3600,

    // 1 day
    'MaxAge' => 86400,
]

exceptionRenderer

此选项在app.php中覆盖默认exceptionRenderer

默认情况下,此类从Error.exceptionRenderer扩展以添加Cors头部

如果您不想覆盖exceptionRenderer,您必须编写

'Cors' => [
	'exceptionRenderer' => false
]

阅读更多