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

(*-*)浩
リリース: 2019-11-05 09:42:49
オリジナル
3970 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート