ホームページ  >  記事  >  PHPフレームワーク  >  yii2 で http リクエストを処理する方法

yii2 で http リクエストを処理する方法

(*-*)浩
(*-*)浩オリジナル
2019-11-05 09:42:493981ブラウズ

yii2 で http リクエストを処理する方法

VerbFilter

VerbFilter は HTTP リクエスト メソッドのフィルターです。その機能は、指定されたアクセスに対して許可されるアクセスを定義することです。 HTTPリクエストにおいて、許可されていないHTTPリクエストが来た場合はHTTP 405エラーがスローされます。 許可されるリクエスト メソッドを指定しない場合、デフォルトですべてのタイプのリクエスト メソッドが許可されます。 (推奨学習: yii チュートリアル )

次に、VerbFilter の簡単な使用法を試してください。

まず、SiteController にコードを追加します。

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

上記のコードは、FORMAT_JSON を使用してフォーマットされた文字列を返します

URL を使用します: http://localhost/basic/web/index.php?r=site/info アクセスすると、正常に返されます

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

次に、behaviors()

public function behaviors()
    {
        return [
            ... ...
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],                   
                    'info' => ['post'],
                ],
            ],
        ];
    }
## にコードを追加します#上記のコードは、behaviors() でフィルター VerbFilter を使用しています。これは、アクション情報にアクセスするときに、POST リクエスト メソッドのみを使用できることを示しています。

この時点では、RESTClient ツールを使用し、GET リクエストを選択します。

コードを再度変更します

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

POST および GET の 2 つのリクエスト メソッドでアクション Info にアクセスし、RESTClient ツールを使用してアクセスし、取得できるようにします。アクセスに GET リクエスト メソッドを選択した場合の戻り値

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

このとき、RESTClient ツールを使用して post 経由でリクエストを送信し、405 エラーを返します。

この時点で、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,
        ],

これら 2 行のコードを追加して、Cookie 保護と CSRF 防止戦略を監視します

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

次の方法でアクセス要求を送信します。再度投稿すると、成功します。

注: CSRF 検証

Web ページにアクセスすると、検証用のフォームに対応する非表示の input:_csrf が存在するため、検証が行われた場合のみ、 Web ページへのアクセス (コマンド ライン CURL リクエストなどの Web フォーム経由ではない) ではなく、アクセス;

は csrf 検証に合格できません。

以上がyii2 で http リクエストを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。