Home > PHP Framework > YII > How to process http requests in yii2

How to process http requests in yii2

(*-*)浩
Release: 2019-11-05 09:42:49
Original
4010 people have browsed it

How to process http requests in yii2

VerbFilter

VerbFilter is a filter for HTTP request methods. Its function is to define the allowed access to specified actions. HTTP request, if an HTTP request that is not allowed comes, an HTTP 405 error will be thrown. If you do not specify the allowed request method, all types of request methods are allowed by default. (Recommended learning: yii tutorial)

Next, try the simple use of VerbFilter.

First, add the code in SiteController

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

The above code returns a string formatted using FORMAT_JSON

Use URL: http://localhost/basic/web/index.php?r=site/info When accessing, it returns successfully

{"message":"hello world","code":100}
Copy after login
Copy after login

Then, add the code in behaviors()

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

The above code uses the filter VerbFilter in behaviors(), which indicates that when accessing the action info, only the POST request method can be used.

At this time, use the RESTClient tool and select the GET request method for access. time, a 405 error is returned

Modify the code again

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

Allow POST and GET two request methods to access the action Info, use the RESTClient tool to access, and obtain the return value when selecting the GET request method for access.

{"message":"hello world","code":100}
Copy after login
Copy after login

At this time, use the tool RESTClient to send the request through post and return a 405 error.

At this time, modify the web.php file

'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,
        ],
Copy after login

Add these two lines of code to police cookie protection and CSRF prevention strategies

 'enableCookieValidation' => false,
 'enableCsrfValidation' => false,
Copy after login

Send a request for access through post again, success.

Note: CSRF verification

Because when the Web page is accessed, there will be a corresponding hidden input:_csrf in the form for verification. Only when the verification is passed can the process proceed normally. Access;

rather than web page access (not through a web form, such as command line CURL request) cannot pass csrf verification.

The above is the detailed content of How to process http requests in yii2. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template