没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\filters\Cors

继承yii\filters\Cors » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/filters/Cors.php

Cors 过滤工具 Cross Origin Resource Sharing.

请务必仔细阅读 CORS 能做的和不能做的事情。CORS 不保护您的 API, 但是允许开发人员授予对第三方代码的访问权限(来自外部域的 Ajax 调用)。

您可以通过将 CORS 筛选器作为行为附加到控制器或模块来使用 CORS 筛选器,如下所示:

public function behaviors()
{
    return [
        'corsFilter' => [
            'class' => \yii\filters\Cors::className(),
        ],
    ];
}

CORS 过滤器可以专门用于限制参数,如下所示, MDN CORS Information

public function behaviors()
{
    return [
        'corsFilter' => [
            'class' => \yii\filters\Cors::className(),
            'cors' => [
                // restrict access to
                'Origin' => ['http://www.myserver.com', 'https://www.myserver.com'],
                // Allow only POST and PUT methods
                'Access-Control-Request-Method' => ['POST', 'PUT'],
                // Allow only headers 'X-Wsse'
                'Access-Control-Request-Headers' => ['X-Wsse'],
                // Allow credentials (cookies, authorization headers, etc.) to be exposed to the browser
                'Access-Control-Allow-Credentials' => true,
                // Allow OPTIONS caching
                'Access-Control-Max-Age' => 3600,
                // Allow the X-Pagination-Current-Page header to be exposed to the browser.
                'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
            ],

        ],
    ];
}

有关如何将 CORS 过滤器添加到控制器的详细信息, 请参见 Guide on REST controllers

公共属性

隐藏继承的属性

属性类型描述被定义在
$actions array 定义特定操作的特定 CORS 规则 yii\filters\Cors
$cors array 为CORS请求处理的 Basic headers。 yii\filters\Cors
$except array List of action IDs that this filter should not apply to. yii\base\ActionFilter
$only array List of action IDs that this filter should apply to. yii\base\ActionFilter
$owner yii\base\Component|null The owner of this behavior yii\base\Behavior
$request yii\web\Request 当前请求。如果未设置,将使用 request 应用程序组件。 yii\filters\Cors
$response yii\web\Response 要发送的响应。如果未设置,将使用 response 应用程序组件。 yii\filters\Cors

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
addCorsHeaders() 将 CORS 标头添加到响应中。 yii\filters\Cors
afterAction() 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
attach() Attaches the behavior object to the component. yii\base\Behavior
beforeAction() This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action. yii\filters\Cors
beforeFilter() yii\base\ActionFilter
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
className() Returns the fully qualified name of this class. yii\base\BaseObject
detach() Detaches the behavior object from the component. yii\base\Behavior
events() Declares event handlers for the $owner's events. yii\base\Behavior
extractHeaders() 从请求中提取 CORS 标头。 yii\filters\Cors
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\base\BaseObject
overrideDefaultSettings() 覆盖特定操作的设置。 yii\filters\Cors
prepareHeaders() 对于每个 CORS 头创建特定的响应。 yii\filters\Cors

受保护的方法

隐藏继承的方法

方法描述被定义在
getActionId() 通过将 yii\base\Action::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 yii\base\ActionFilter
headerize() 将任何字符串(包括带 HTTP 前缀的 php headers)转换为头格式。 yii\filters\Cors
headerizeToPhp() 将任何字符串(包括带 HTTP 前缀的 php headers)转换为头格式。 yii\filters\Cors
isActive() 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 yii\base\ActionFilter
prepareAllowHeaders() 处理经典 CORS 请求以避免重复代码。 yii\filters\Cors

属性详情

$actions 公共 属性

定义特定操作的特定 CORS 规则

public array $actions = []
$cors 公共 属性

为CORS请求处理的 Basic headers。

public array $cors = ['Origin' => ['*'], 'Access-Control-Request-Method' => ['GET''POST''PUT''PATCH''DELETE''HEAD''OPTIONS'], 'Access-Control-Request-Headers' => ['*'], 'Access-Control-Allow-Credentials' => null'Access-Control-Max-Age' => 86400'Access-Control-Expose-Headers' => []]
$request 公共 属性

当前请求。如果未设置,将使用 request 应用程序组件。

public yii\web\Request $request null
$response 公共 属性

要发送的响应。如果未设置,将使用 response 应用程序组件。

方法详情

addCorsHeaders() 公共 方法

将 CORS 标头添加到响应中。

public void addCorsHeaders($response, $headers)
$response yii\web\Response
$headers array

已计算的 CORS 标头

beforeAction() 公共 方法

This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action.

public boolean beforeAction($action)
$action yii\base\Action

要执行的动作。

return boolean

该动作是否应继续执行。

extractHeaders() 公共 方法

从请求中提取 CORS 标头。

public array extractHeaders()
return array

要处理的 CORS 标头

headerize() 受保护 方法

将任何字符串(包括带 HTTP 前缀的 php headers)转换为头格式。

例如:

  • X-PINGOTHER -> X-Pingother
  • X_PINGOTHER -> X-Pingother
protected string headerize($string)
$string string

要转换的字符串

return string

结果是 "header" 格式

headerizeToPhp() 受保护 方法

将任何字符串(包括带 HTTP 前缀的 php headers)转换为头格式。

例如:

  • X-Pingother -> HTTP_X_PINGOTHER
  • X PINGOTHER -> HTTP_X_PINGOTHER
protected string headerizeToPhp($string)
$string string

要转换的字符串

return string

结果是 "php $_SERVER header" 格式

overrideDefaultSettings() 公共 方法

覆盖特定操作的设置。

public void overrideDefaultSettings($action)
$action yii\base\Action

要覆盖的操作设置

prepareAllowHeaders() 受保护 方法

处理经典 CORS 请求以避免重复代码。

protected void prepareAllowHeaders($type, $requestHeaders, &$responseHeaders)
$type string

我们将处理的头部类型

$requestHeaders array

客户端请求 CORS 标头

$responseHeaders array

发送到客户端的 CORS 响应标头

prepareHeaders() 公共 方法

对于每个 CORS 头创建特定的响应。

public array prepareHeaders($requestHeaders)
$requestHeaders array

我们检测到的 CORS headers

return array

CORS headers 准备发送