Класс yii\filters\Cors
| Наследование | yii\filters\Cors » yii\base\ActionFilter » yii\base\Behavior » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/filters/Cors.php |
Фильтр CORS реализует Cross Origin Resource Sharing.
Внимательно ознакомьтесь с тем, что делает CORS и чего не делает. CORS не обеспечивает безопасность вашего API, но позволяет разработчику предоставлять доступ стороннему коду (вызовы ajax из внешнего домена).
Вы можете использовать фильтр CORS, прикрепив его как поведение к контроллеру или модулю, как показано ниже,
public function behaviors()
{
return [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
],
];
}
Фильтр CORS может быть специализирован для ограничения параметров, как это, Информация о CORS от MDN
public function behaviors()
{
return [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to
'Origin' => ['http://www.myserver.com', 'https://www.myserver.com'],
'Access-Control-Request-Method' => ['POST', 'PUT'],
// Allow only POST and PUT methods
'Access-Control-Request-Headers' => ['X-Wsse'],
// Allow only headers 'X-Wsse'
'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 в контроллер см. в Руководстве по REST-контроллерам.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $actions | массив | Определяет специфические правила CORS для конкретных действий | yii\filters\Cors |
| $cors | массив | Основные заголовки, обрабатываемые для запросов CORS. | yii\filters\Cors |
| $except | массив | Список идентификаторов действий, к которым этот фильтр не должен применяться. | yii\base\ActionFilter |
| $only | массив | Список идентификаторов действий, к которым этот фильтр должен применяться. | yii\base\ActionFilter |
| $owner | yii\base\Component|null | Владелец этого поведения | yii\base\Behavior |
| $request | yii\web\Request | Текущий запрос. | yii\filters\Cors |
| $response | yii\web\Response | Ответ, который должен быть отправлен. | yii\filters\Cors |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т. е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| addCorsHeaders() | Добавляет заголовки CORS в ответ | yii\filters\Cors |
| afterAction() | Этот метод вызывается сразу после выполнения действия. | yii\base\ActionFilter |
| afterFilter() | yii\base\ActionFilter | |
| attach() | Прикрепляет объект поведения к компоненту. | yii\base\Behavior |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку к действию в последнюю минуту. | yii\filters\Cors |
| beforeFilter() | yii\base\ActionFilter | |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| detach() | Открепляет объект поведения от компонента. | yii\base\Behavior |
| events() | Объявляет обработчики событий для событий $owner. | yii\base\Behavior |
| extractHeaders() | Извлекает заголовки CORS из запроса | yii\filters\Cors |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
| overrideDefaultSettings() | Переопределяет настройки для конкретного действия | yii\filters\Cors |
| prepareHeaders() | Для каждого заголовка CORS создает специфический ответ | yii\filters\Cors |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| getActionId() | Возвращает идентификатор действия, преобразуя yii\base\Action::$uniqueId в идентификатор, относящийся к модулю | yii\base\ActionFilter |
| headerize() | Преобразует любую строку (включая php заголовки с префиксом HTTP) в формат заголовка, например: X-PINGOTHER -> X-Pingother X_PINGOTHER -> X-Pingother | yii\filters\Cors |
| headerizeToPhp() | Преобразует любую строку (включая php заголовки с префиксом HTTP) в формат заголовка, например: X-Pingother -> HTTP_X_PINGOTHER X PINGOTHER -> HTTP_X_PINGOTHER | yii\filters\Cors |
| isActive() | Возвращает значение, указывающее, активен ли фильтр для данного действия. | yii\base\ActionFilter |
| prepareAllowHeaders() | Обработка классического запроса CORS для избежания дублирования кода | yii\filters\Cors |
Подробное описание свойств
$actions публичное свойство
Определяет специфические правила CORS для конкретных действий
public array $actions = []
$cors публичное свойство
Основные заголовки, обрабатываемые для запросов CORS.
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 приложения.
public yii\web\Response $response = null
Подробное описание методов
addCorsHeaders() публичный метод
Добавляет заголовки CORS в ответ
| public void addCorsHeaders ( $response, $headers ) | ||
|---|---|---|
| $response | yii\web\Response | |
| $headers | массив |
Заголовки CORS, которые были вычислены |
beforeAction() публичный метод
Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку к действию в последнюю минуту.
| public boolean beforeAction ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Действие, которое должно быть выполнено. |
| return | boolean |
Выполнять ли действие дальше. |
extractHeaders() публичный метод
Извлечь заголовки CORS из запроса
| public массив extractHeaders ( ) | ||
|---|---|---|
| return | массив |
Заголовки CORS для обработки |
headerize() защищённый метод
Преобразовать любую строку (включая php заголовки с префиксом HTTP) в формат заголовка, например: X-PINGOTHER -> X-Pingother X_PINGOTHER -> X-Pingother
| protected строка headerize ( $string ) | ||
|---|---|---|
| $string | строка |
Строка для преобразования |
| return | строка |
Результат в формате "заголовок" |
headerizeToPhp() защищённый метод
Преобразовать любую строку (включая php заголовки с префиксом HTTP) в формат заголовка, например: X-Pingother -> HTTP_X_PINGOTHER X PINGOTHER -> HTTP_X_PINGOTHER
| protected строка headerizeToPhp ( $string ) | ||
|---|---|---|
| $string | строка |
Строка для преобразования |
| return | строка |
Результат в формате "php $_SERVER заголовок" |
overrideDefaultSettings() публичный метод
Переопределить настройки для определенного действия
| public void overrideDefaultSettings ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Настройки действия для переопределения |
prepareAllowHeaders() защищённый метод
Обработать классический запрос CORS, чтобы избежать дублирования кода
| protected void prepareAllowHeaders ( $type, $requestHeaders, &$responseHeaders ) | ||
|---|---|---|
| $type | строка |
Тип заголовков, которые мы будем обрабатывать |
| $requestHeaders | массив |
Заголовки CORS запрошенные клиентом |
| $responseHeaders | массив |
Заголовки CORS ответа, отправленные клиенту |
prepareHeaders() публичный метод
Для каждого заголовка CORS создать соответствующий ответ
| public массив prepareHeaders ( $requestHeaders ) | ||
|---|---|---|
| $requestHeaders | массив |
Заголовки CORS, которые мы обнаружили |
| return | массив |
Заголовки CORS, готовые к отправке |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-filters-cors.html