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 |
属性详情
定义特定操作的特定 CORS 规则
为CORS请求处理的 Basic headers。
当前请求。如果未设置,将使用 request
应用程序组件。
要发送的响应。如果未设置,将使用 response
应用程序组件。
方法详情
将 CORS 标头添加到响应中。
public void addCorsHeaders($response, $headers) | ||
$response | yii\web\Response | |
$headers | array | 已计算的 CORS 标头 |
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 | 该动作是否应继续执行。 |
---|
从请求中提取 CORS 标头。
public array extractHeaders() | ||
return | array | 要处理的 CORS 标头 |
---|
将任何字符串(包括带 HTTP 前缀的 php headers)转换为头格式。
例如:
- X-PINGOTHER -> X-Pingother
- X_PINGOTHER -> X-Pingother
protected string headerize($string) | ||
$string | string | 要转换的字符串 |
return | string | 结果是 "header" 格式 |
---|
将任何字符串(包括带 HTTP 前缀的 php headers)转换为头格式。
例如:
- X-Pingother -> HTTP_X_PINGOTHER
- X PINGOTHER -> HTTP_X_PINGOTHER
protected string headerizeToPhp($string) | ||
$string | string | 要转换的字符串 |
return | string | 结果是 "php $_SERVER header" 格式 |
---|
覆盖特定操作的设置。
public void overrideDefaultSettings($action) | ||
$action | yii\base\Action | 要覆盖的操作设置 |
处理经典 CORS 请求以避免重复代码。
protected void prepareAllowHeaders($type, $requestHeaders, &$responseHeaders) | ||
$type | string | 我们将处理的头部类型 |
$requestHeaders | array | 客户端请求 CORS 标头 |
$responseHeaders | array | 发送到客户端的 CORS 响应标头 |
对于每个 CORS 头创建特定的响应。
public array prepareHeaders($requestHeaders) | ||
$requestHeaders | array | 我们检测到的 CORS headers |
return | array | CORS headers 准备发送 |
---|