国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

啟用Csrf后POST數據時出現的400錯誤

2024-05-04 23:37:20
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了啟用Csrf后POST數據時出現的400錯誤的相關資料,需要的朋友可以參考下

最近一直出現這樣的錯誤,一直在查找原因,偶然看到一篇解決的文章,分享給大家看看。

第一種解決辦法是關閉Csrf

 

 
  1. public function init(){ 
  2. $this->enableCsrfValidation = false

第二種解決辦法是在form表單中加入隱藏域

 

  1. <input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>"

第三種解決辦法是在AJAX中加入_csrf字段

 

 
  1. var csrfToken = $('meta[name="csrf-token"]').attr("content"); 
  2. $.ajax({ 
  3. type: 'POST'
  4. url: url, 
  5. data: {_csrf:csrfToken}, 
  6. success: success, 
  7. dataType: dataType 
  8. }); 

Yii這個匹配的過程和Yii::$app->request->csrfToken 這個值存儲位置說明:

存儲位置

 

 
  1. protected function createCsrfCookie($token) 
  2. $options = $this->csrfCookie; 
  3. $options['name'] = $this->csrfParam; 
  4. $options['value'] = $token; 
  5. return new Cookie($options); 

校驗方法

 

 
  1. public function validateCsrfToken($token = null
  2. $method = $this->getMethod(); 
  3. // only validate CSRF token on non-"safe" methods http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1 
  4. if (!$this->enableCsrfValidation || in_array($method, ['GET''HEAD''OPTIONS'], true)) { 
  5. return true
  6.  
  7. $trueToken = $this->loadCsrfToken(); 
  8.  
  9. if ($token !== null) { 
  10. return $this->validateCsrfTokenInternal($token, $trueToken); 
  11. else { 
  12. return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken) 
  13. || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken); 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰考县| 贵南县| 丹东市| 尚志市| 益阳市| 龙游县| 绥芬河市| 平南县| 察雅县| 新晃| 综艺| 芦山县| 治县。| 盘锦市| 敦煌市| 苍梧县| 磐安县| 阳江市| 长宁区| 防城港市| 和林格尔县| 阿拉善左旗| 基隆市| 黑山县| 闻喜县| 阜新| 枣阳市| 宜兰县| 达州市| 汨罗市| 辉县市| 海宁市| 浦东新区| 康平县| 津市市| 美姑县| 宜兰县| 海原县| 车险| 迁安市| 延庆县|