yii2.0 api post報錯的解決辦法:1、關閉“_csrf”驗證;2、在表單中添加隱藏域;3、在Ajax中添加“_csrf”數據字段;4、將“post”提交改為“get”。
Yii2.0中POST提交數據時出現400請求錯誤
1、發現問題所在的方法
使用Chrome瀏覽器,檢查錯誤,到network查看response:
Bad?Request?(#400):?Unable?to?verify?your?date?submission.???(無法驗證提交的數據)
推薦:《yii教程》
2、解決方法
(1)關閉_csrf驗證
public?function?init(){ ????$this->enableCsrfValidation?=?false; }
(2)在表單中添加隱藏域
<input>request->csrfToken??>">
如果我們使用的是Yii框架的助手類生成表單,它會自帶_csrf字段,不需要我們額外地添加隱藏域。
(3)Ajax中添加_csrf數據字段
$.ajax({ ?????????????url:?'demo.php',//發送驗證碼的url ?????????????type:?'post', ?????????????data:?{ ?????????????????_csrf:"=Yii::$app->request->csrfToken?>", ?????????????????mobile:123 ?????????????}, ?????????????success:?function(){ ?????????????????????alert('發送成功'); ?????????????}, ?????????????error:?function(){ ?????????????????alert('發送失敗'); ?????????????????return?false; ?????????????} ?????????})
(4)最簡單的方法,將post提交改為get
說明:Yii框架有自帶的數據驗證功能,如果我們post提交的數據不帶有和框架對應的_csrf相同的驗證數據字段,提交的數據會被視為不可信的字段,便會出現400錯誤。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END