csrf在ajax、post的条件下会有自动添加机制吗?我ajax没有_csrf竟然没出400 [ 2.0 版本 ]
经过如下:
enableCsrfValidation一直是true,以前不知道ajax在使用post的条件下需要添加_csrf,但竟然没出现400的问题。今天把代码重新布局了一下,把一个action的代码复制到了一个新的controller里(但仅此而已,action和view的代码逻辑都没怎么变),结果400了,来论坛搜了一下明白了需要加入_csrf数据段。
但不理解的是以前为什么没有出问题呢?而且在以前的controller里查看http报文的时候也发现了X-CSRF-Token:*****字段。
共 3 个回答
-
在controller中单独添加
public $enableCsrfValidation = true;
这样是可以在该controller中单独关闭验证
共 6 条回复cristalblock 回复于 2015-10-28 22:03 回复csrf在controller里没有关,而且运行良好,我原来的ajax代码运行的时候,http报文里有X-CSRF-Token:*****字段。有什么别的可能性吗?
@cristalblock 那跟验证无关,因为你提交的数据中带上了验证码.你自己去调试下之前的代码,看下csrf数据是如何被带入的. 可能这次你移植时,漏掉的添加csrf数据的部分.
cristalblock 回复于 2015-10-28 22:24 回复@koko 因为以前不知道有csrf这回事,所以没写过相关代码,而且<?= Html::csrfMetaTags() ?>这句我两次都有,我现在也搞不懂怎么弄进来的。
@cristalblock 无心插柳吧,以前代码在的话,仔细看看,总能找出在哪添加过csrf相关代码。
cristalblock 回复于 2015-10-28 23:29 回复@koko 好吧,谢谢你的回答。
@cristalblock 之前提供的关闭csrf验证方法有误,已更正。 <?= Html::csrfMetaTags() ?>应该是系统布局文件中自带的。
cristalblock
注册时间:2015-05-12
最后登录:2017-06-26
在线时长:24小时24分
最后登录:2017-06-26
在线时长:24小时24分
- 粉丝4
- 金钱8685
- 威望0
- 积分8925