Yii2 VerbFilter возвращает 500 кодов состояния вместо 405
Я хочу разрешить только GET запросы к моему контроллеру, и я подключил VerbFilter. В документации говорится, что он должен возвращать код состояния http 405, когда метод запроса не разрешен, но вместо этого я получил 500 кодов состояния.
class MyController extends Controller {
...
public function behaviors(){
return [
'verb' => [
'class' => VerbFilter::className(),
'actions' => [ '*' => ['get'] ]
];
}
public function actions(){
return [ 'error' => [
'class' => 'yii\web\ErrorAction'
]];
}
...
}
Сообщение об ошибке
An Error occurred while handling another error:
exception 'yii\web\MethodNotAllowedHttpException' with message
'Method Not Allowed. This url can only handle the following request methods: GET.'
in /yii_project/vendor/yiisoft/yii2/filters/VerbFilter.php:105
Previous exception:
exception 'yii\web\MethodNotAllowedHttpException' with message
'Method Not Allowed. This url can only handle the following request methods: GET.'
in /yii_project/vendor/yiisoft/yii2/filters/VerbFilter.php:105
Как видите, предыдущая ошибка является дубликатом текущей ошибки. Я понятия не имею о причине этого.
1 ответ
Решение
Первая ошибка: "Previous Error
"- это 405 с перенаправлением на обработчик ошибок. вторая ошибка: ваше действие по ошибке требует также запрос 'GET', но выглядит так, как будто получен запрос того же типа.=> бесконечный цикл
укажите действие для фильтра глаголов, и вы получите ошибку 405
public function behaviors(){
return [
'verb' => [
'class' => VerbFilter::className(),
'actions' => [ 'action-name' => ['get'] ]
];
}