摘要:YII2中通过ajax post表单数据需要验证CSRF否则post数据是无法提交过去的。虽然有其他人提供过解决方案,但都不够完整,除了把enableCsrfValidation设为false外,其他的方法都有不小的问题。这里就给大家分享完整的ajax post提交表单数据验证不通过的解决方法。

YII2中通过ajax post表单数据需要验证CSRF否则post数据是无法提交过去的。虽然有其他人提供过解决方案,但都不够完整,除了把enableCsrfValidation设为false外,其他的方法都有不小的问题。这里就给大家分享完整的ajax post提交表单数据验证不通过的解决方法。

1、把enableCsrfValidation设为false

这种方法的目的是关闭csrf验证,出于安全考虑不建议关闭,因为一旦关闭控制器中的其他需要验证csrf的地方也不会验证了。//给控制器类添加属性

public $enableCsrfValidation = false;

或者初始化控制器的时候设置public function init(){

$this->enableCsrfValidation = false;

}

2、把ajax中的post提交数据改为get提交,同时控制器中的行为过滤控制和数据接收也都改为get.这样的话就不会影响到其他行为的csrf验证了,不过表单数据的提交同样不建议用get.

3、在ajax的提交数据中把csrf验证一起提交过去,虽然网上有这个解决方法,但并不全面,遗漏了一个非常重要的参数配置,request提交验证配置//前台配置

'request' => [

'csrfParam' => '_csrf-frontend',

],

//后台配置

'request' => [

'csrfParam' => '_csrf-backend',

],

虽然都是csrf验证,但前台和后台的csrf验证参数是不一样的。所以在ajax中添加提交数据的时候也是不一样的,前台提交数据验证应该用'_csrf-frontend':csrfToken

如果是后台则要用'_csrf-backend':csrfToken,前提是没有修改前后台request配置。修改了就用修改后的值,只要保持ajax和配置中的验证字段一致即可。

至于是添加隐藏域还是直接在ajax中获取csrfToken都无所谓,最终的目的都是通过ajax把csrfToken post给控制器。

以上就是本文提供的ajax post数据时数据无法验证 提示400错误的解决方法。

yii2 html form,YII2中ajax通过post提交form表单数据报400错误的解决方法相关推荐

  1. VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法

    VS2017 启动调试出现 无法启动程序"http://localhost:15613" 操作在当前状态中是非法的. 同时附加进程也是错误的解决方法 参考文章: (1)VS2017 ...

  2. Linux中的基本命令无法使用,报Command not found的错误的解决方法

    Linux中的基本命令无法使用,报Command not found的错误的解决方法 参考文章: (1)Linux中的基本命令无法使用,报Command not found的错误的解决方法 (2)ht ...

  3. 关于dede获取购物车中商品ID及提交为表单问题总结

    最近在建QQ知啦www.qqzla.com站过程中遇到一个问题,要求是这样的,将购物车中的商品提交为表单. 先将总结给大家分享一下. 因DEDE循环语句 {dede:array.Items} {/de ...

  4. 织梦ajax跨域提交自定义表单

    1.在织梦文件中找到/plus/diy.php文件,顶部加上跨域请求代码 header('Access-Control-Allow-Origin:*');  //支持全域名访问,不安全,部署后需要固定 ...

  5. ajax提交后立刻刷新,Ajax提交表单页面刷新很快的解决方法

    注:使用ajax 提交表单时 type类型最好不用submit 用button合适 function formCheck(){ $.ajax({ type: "post", url ...

  6. php中在使用js_提交的表单不为空_为什么显示等于,php编程,这段代码为什么不能阻止表单的提交!不管为不为空 都跳转到1.php页面啦 这是怎么回事?...

    php编程,这段代码为什么不能阻止表单的提交!不管为不为空 都跳转到1.php页面啦 这是怎么回事? 关注:292  答案:5  mip版 解决时间 2021-01-12 06:43 提问者夜落花台 ...

  7. Java程序中使用Spire Jar包报java.lang.NoSuchMethodError类型错误的解决方法

    Jar包功能概述 使用Spire系列的Jar包可以操作Word.Excel.PPT.PDF.Barcode等格式的文件,分别对应使用的jar包是Spire.Doc for Java.Spire.XLS ...

  8. Delphi中TMediaPlayer播放音乐出现no MCI device open的错误的解决方法

    最近用DELPHI的TMediaPlayer写了一个音乐控制软件,用到了TMediaPlayer控件,播放音乐时总是出现no MCI device open的错误.查了半天资料终于找到原因. 我原来是 ...

  9. clickhouse将csv文件导入表中出现的 DB::ParsingException: Cannot parse input: expected ‘,‘ before: ‘\‘错误的解决方法

    将csv文件导入到clickhouse的表中 出现如下错误 是由于csv文件中的符号出现解析错误 注意:csv文件中的分隔符是",",而不是"制表符",仔细检查 ...

最新文章

  1. CSS控制鼠标的箭头
  2. 也谈Spring MVC
  3. 前端学习(1821):前端面试题之封装函数之去重
  4. 01 svn服务搭建
  5. 如何解决php 生成验证码图片不显示问题
  6. 中国“古诗词”数据库还有可用的API
  7. 科技公司网页设计(h5 + css3)
  8. 一文62页PPT读懂中国供应链金融
  9. dumprep.exe 进程吃掉一半CPU
  10. Uniapp|Vue-汉字转拼音|获取汉字的首字母js实现
  11. 人生重开模拟器,脚本点击
  12. Linpack测试环境的搭建
  13. 智能电饭煲电路图及其原理_智能电饭煲工作原理图
  14. 关于MODIS数据说明及简单处理
  15. php打开www里面的文件夹,php文件怎样打开
  16. OpenSSL 制作证书时出现的错误的解决办法
  17. pylon保存图片_pylon界面中文说明 德国basler工业相机.pdf
  18. 从零开始使用 IDEA 开发插件 (一)
  19. 英文诗歌数据-绘制英文词云图+英文本文分类(pytorch)
  20. java计算机毕业设计体检预约管理系统源码+系统+数据库+lw文档

热门文章

  1. 安装选择Arduino Leonardo新手入门体验
  2. listen()函数中的SOMAXCONN含义
  3. HDOJ 1698 Just a Hook(线段树成段更新)
  4. Windows中彻底卸载MySQL
  5. 使用Kibana画图展示Nginx日志报表
  6. 25 个必须记住的SSH 命令
  7. 查看eclipse中已经安装的插件(英文版界面)
  8. HTML5等先关。。。
  9. 关于Oracle中的错误 「SQL*Loader-522: lfiopn failed for file (xxx.log)」
  10. Eclipse,工程builed失败的原因。