Maison >cadre php >YII >Comment traiter les requêtes http dans yii2

Comment traiter les requêtes http dans yii2

(*-*)浩
(*-*)浩original
2019-11-05 09:42:494008parcourir

Comment traiter les requêtes http dans yii2

VerbFilter

VerbFilter est un filtre pour les méthodes de requête HTTP. Sa fonction est de définir ce qui est autorisé à accéder. actions spécifiées, si une requête HTTP non autorisée arrive, une erreur HTTP 405 sera générée. Si aucune méthode de requête autorisée n'est spécifiée, tous les types de méthodes de requête sont autorisés par défaut. (Apprentissage recommandé : tutoriel yii)

Ensuite, essayez l'utilisation simple de VerbFilter.

Tout d'abord, ajoutez le code dans SiteController

public function actionInfo()
    {
        return \Yii::createObject([
            'class' => 'yii\web\Response',
            'format' => \yii\web\Response::FORMAT_JSON,
            'data' => [
                'message' => 'hello world',
                'code' => 100,
            ],
        ]);
    }

Le code ci-dessus renvoie une chaîne formatée avec FORMAT_JSON

Lors de l'accès à l'aide de l'URL : http://localhost/basic/web/index.php?r=site/info, il renvoie avec succès

{"message":"hello world","code":100}

Ensuite, ajoutez du code dans behaviors()

public function behaviors()
    {
        return [
            ... ...
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],                   
                    'info' => ['post'],
                ],
            ],
        ];
    }

Le code ci-dessus utilise le filtre VerbFilter dans behaviors(), qui indique que lors de l'accès aux informations d'action, seule la méthode de requête POST peut être utilisée

À ce stade, utilisez l'outil RESTClient et sélectionnez la méthode de requête GET pour l'accès . cette fois, une erreur 405 est renvoyée

Modifiez à nouveau le code

public function behaviors()
    {
        return [
            ... ...
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],                   
                    'info' => ['post','get'],
                ],
            ],
        ];
    }

Autorisez les méthodes de requête POST et GET à accéder aux informations d'action, utilisez l'outil RESTClient pour y accéder et obtenez la valeur de retour lorsque vous sélectionnez la méthode de demande GET pour l'accès.

{"message":"hello world","code":100}

À ce stade, utilisez l'outil RESTClient pour envoyer la demande par courrier et renvoyer une erreur 405.

À ce moment, modifiez le fichier web.php

'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '4mWc84oNsYJpc-nnnjMwyOOiCTgcThig',
            'enableCookieValidation' => false,
            'enableCsrfValidation' => false,
        ],

et ajoutez ces deux lignes de code pour contrôler la protection des cookies et les stratégies de prévention CSRF

 'enableCookieValidation' => false,
 'enableCsrfValidation' => false,

envoyez à nouveau une demande de accès par la poste.

Remarque : Vérification CSRF

Car lors de l'accès à la page Web, il y aura une entrée cachée correspondante :_csrf dans le formulaire pour vérification Uniquement lorsque la vérification est effectuée. L'accès

plutôt que l'accès aux pages Web (pas via des formulaires Web, tels que les requêtes CURL en ligne de commande) ne peut pas passer la vérification CSRF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn