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'] ]
     ];
   }
Другие вопросы по тегам