yii2 html form,YII2中ajax通过post提交form表单数据报400错误的解决方法
摘要: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错误的解决方法相关推荐
- VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法
VS2017 启动调试出现 无法启动程序"http://localhost:15613" 操作在当前状态中是非法的. 同时附加进程也是错误的解决方法 参考文章: (1)VS2017 ...
- Linux中的基本命令无法使用,报Command not found的错误的解决方法
Linux中的基本命令无法使用,报Command not found的错误的解决方法 参考文章: (1)Linux中的基本命令无法使用,报Command not found的错误的解决方法 (2)ht ...
- 关于dede获取购物车中商品ID及提交为表单问题总结
最近在建QQ知啦www.qqzla.com站过程中遇到一个问题,要求是这样的,将购物车中的商品提交为表单. 先将总结给大家分享一下. 因DEDE循环语句 {dede:array.Items} {/de ...
- 织梦ajax跨域提交自定义表单
1.在织梦文件中找到/plus/diy.php文件,顶部加上跨域请求代码 header('Access-Control-Allow-Origin:*'); //支持全域名访问,不安全,部署后需要固定 ...
- ajax提交后立刻刷新,Ajax提交表单页面刷新很快的解决方法
注:使用ajax 提交表单时 type类型最好不用submit 用button合适 function formCheck(){ $.ajax({ type: "post", url ...
- php中在使用js_提交的表单不为空_为什么显示等于,php编程,这段代码为什么不能阻止表单的提交!不管为不为空 都跳转到1.php页面啦 这是怎么回事?...
php编程,这段代码为什么不能阻止表单的提交!不管为不为空 都跳转到1.php页面啦 这是怎么回事? 关注:292 答案:5 mip版 解决时间 2021-01-12 06:43 提问者夜落花台 ...
- Java程序中使用Spire Jar包报java.lang.NoSuchMethodError类型错误的解决方法
Jar包功能概述 使用Spire系列的Jar包可以操作Word.Excel.PPT.PDF.Barcode等格式的文件,分别对应使用的jar包是Spire.Doc for Java.Spire.XLS ...
- Delphi中TMediaPlayer播放音乐出现no MCI device open的错误的解决方法
最近用DELPHI的TMediaPlayer写了一个音乐控制软件,用到了TMediaPlayer控件,播放音乐时总是出现no MCI device open的错误.查了半天资料终于找到原因. 我原来是 ...
- clickhouse将csv文件导入表中出现的 DB::ParsingException: Cannot parse input: expected ‘,‘ before: ‘\‘错误的解决方法
将csv文件导入到clickhouse的表中 出现如下错误 是由于csv文件中的符号出现解析错误 注意:csv文件中的分隔符是",",而不是"制表符",仔细检查 ...
最新文章
- CSS控制鼠标的箭头
- 也谈Spring MVC
- 前端学习(1821):前端面试题之封装函数之去重
- 01 svn服务搭建
- 如何解决php 生成验证码图片不显示问题
- 中国“古诗词”数据库还有可用的API
- 科技公司网页设计(h5 + css3)
- 一文62页PPT读懂中国供应链金融
- dumprep.exe 进程吃掉一半CPU
- Uniapp|Vue-汉字转拼音|获取汉字的首字母js实现
- 人生重开模拟器,脚本点击
- Linpack测试环境的搭建
- 智能电饭煲电路图及其原理_智能电饭煲工作原理图
- 关于MODIS数据说明及简单处理
- php打开www里面的文件夹,php文件怎样打开
- OpenSSL 制作证书时出现的错误的解决办法
- pylon保存图片_pylon界面中文说明 德国basler工业相机.pdf
- 从零开始使用 IDEA 开发插件 (一)
- 英文诗歌数据-绘制英文词云图+英文本文分类(pytorch)
- java计算机毕业设计体检预约管理系统源码+系统+数据库+lw文档