>  기사  >  PHP 프레임워크  >  yii2에서 http 요청을 처리하는 방법

yii2에서 http 요청을 처리하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-05 09:42:493976검색

yii2에서 http 요청을 처리하는 방법

VerbFilter

VerbFilter는 HTTP 요청 메서드용 필터입니다. 해당 기능은 지정된 작업에 액세스하도록 허용된 HTTP 요청을 정의하는 것입니다. HTTP 요청이 허용되지 않으면 HTTP 405 오류가 발생합니다. 허용되는 요청 방법을 지정하지 않으면 기본적으로 모든 유형의 요청 방법이 허용됩니다. (추천학습: yii tutorial)

다음으로 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}
#🎜🎜 #다음, add code in Behaviors()

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

위의 코드는 Behaviors()의 VerbFilter 필터를 사용하여 작업 정보에 액세스할 때 POST 요청 메서드만 사용할 수 있음을 나타냅니다.

# 🎜🎜# 이때 RESTClient 툴을 사용하여 접속을 위해 GET 요청 방식을 선택하면 405 에러가 반환됩니다.

코드를 다시 수정하세요

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

POST와 GET 요청 모두 허용 메서드 정보에 액세스하려면 RESTClient 도구를 사용하여 액세스합니다. GET 요청 메서드를 선택하여 액세스하면

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

이 때 RESTClient 도구를 사용하여 메시지를 보냅니다. 게시물을 통해 요청하면 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,
        ],

경찰 쿠키 보호 및 CSRF 방지 전략에 이 두 줄의 코드를 추가하세요

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

다시 게시물을 통해 액세스를 요청했습니다. 성공했습니다.

참고:

CSRF 검증웹 페이지에 액세스하면 확인을 위한 양식에 해당 숨겨진 입력:_csrf가 있기 때문입니다. . 일반 액세스는 검증을 통과한 후에만 가능합니다.

웹 페이지 액세스 방법(명령줄 CURL 요청과 같은 웹 양식을 통하지 않음)은 csrf 검증을 통과할 수 없습니다.

위 내용은 yii2에서 http 요청을 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.