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

Comment traiter les requêtes http dans yii2

(*-*)浩
Libérer: 2019-11-05 09:42:49
original
4019 Les gens l'ont consulté

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,
            ],
        ]);
    }
Copier après la connexion

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}
Copier après la connexion
Copier après la connexion

Ensuite, ajoutez du code dans behaviors()

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

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'],
                ],
            ],
        ];
    }
Copier après la connexion

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}
Copier après la connexion
Copier après la connexion

À 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,
        ],
Copier après la connexion

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,
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal