先畫一幅流程圖理理思路:
結果呢, 無論是用測試工具postman還是用命令列curl請求總是會得到http400:bad request
的錯誤;而如果用web網頁方式get訪問(去除verbfilter的post限制),是正常的
通過帖子下面的帖子找到了問題的所在,是csrf驗證的原因;
因為web網頁訪問的時候form表單中會有對應的乙個隱藏input:_csrf
進行了驗證才可以正常進行訪問;
而非網頁訪問方式(不通過web表單)是無法通過csrf驗證
的。
而curl訪問方式都沒有用到cookie, 故我認為沒有必要在這裡防範csrf
攻擊,暫時用下面的辦法將其禁用。
class
controller
extends \yii\base\controller
public
function
run()
}
3.2.3 yii\helpers\html終於找到了csrf
public
static
function
beginform
($action = '', $method = 'post', $options = )
... ...
"/>
name="viewport"
content="width=device-width, initial-scale=1">
= html::csrfmetatags() ?>
= html::encode($this->title) ?>
title>
<?php
$this->head() ?>
head>
正好也是在3.2.3 yii\helpers\html
中定義的
/**
* generates the meta tags containing csrf token information.
*@return string the generated meta tags
*@see request::enablecsrfvalidation
*/public
static
function
csrfmetatags
() else
}
原始碼請參考:
來個流程圖(手繪版):
從Yii2的Request看其CSRF防範策略
用ajax請求還是用命令列curl請求總是會得到http400 bad request的錯誤,而如果用web網頁方式get訪問 去除verbfilter的post限制 是正常的,是csrf驗證的原因 因為web網頁訪問的時候form表單中會有對應的乙個隱藏input csrf進行了驗證才可以正常進行...
Yii2中request的使用方法
1 普通的get和pst請求 123 get request get 4 等同於 get get 56 id request get id 7 等同於 id isset get id get id null 89 id request get id 1 10 等同於 id isset get id ...
yii2框架 yii2自身的自動載入 三
上一節說完了composer的自動載入,下面我們來說一下yii2自身的自動載入。在我們的入口檔案,例如index.php,如下 comment out the following two lines when deployed to production defined yii debug or d...