用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2167|回复: 3
收起左侧

[版本 3.x] ci3开启csrf 遇到ajax 不知道怎么搞了

[复制链接]
发表于 2018-6-1 17:17:39 | 显示全部楼层 |阅读模式
ci3开启csrf 遇到ajax 不知道怎么搞了;

如 有个注册表单 输入用户名,第一次用ajax提交到后台,查询到重复了,再次修改 提交的时候 csrf 拦截了,这种怎么破,
看了论坛上的 没有试通,
谁有做过 这种的吗
 楼主| 发表于 2018-6-1 18:10:55 | 显示全部楼层
最后改成了这样的


PHP复制代码
 
$config['csrf_protection']                                = TRUE;
$config['csrf_token_name']                        = 'csrf_token_name';
$config['csrf_cookie_name']                        = 'csrf_cookie_name';
$config['csrf_expire']                                = 1800;
$config['csrf_regenerate']                        = FALSE;
 
 
复制代码



ajax 提交 表单时
csrf_regenerate 和 csrf_expire :要结合起来用
1.csrf_regenerate 这个为 TRUE 表示每次提交操作都会重新生成 csrf_cookie ,用ajax的 把它 关闭 设为 FALSE
2.csrf_expire 失效时长,我这里1800秒,表示 如果这个表单1800秒内没有提交 , 再提交的时候就会提示你失效了,你必须重新载入一下页面;
如果一直提交,会一直有效。

好OK了,
发表于 2018-6-2 01:00:52 | 显示全部楼层
需要有个方式获取新生成的 token。
发表于 2018-6-2 15:39:02 | 显示全部楼层
有两种方法,一种就是ajax请求的时候,返回header头里面有新的csrf信息,可以供下次请求用。
第二种方法,就是每次请求的时候csrf的name和value通过cookie来获取,这样每次请求的时候就可以正常通过。不过需要注意,获取cookie的时候不能全局通用。必须在ajax每次请求的时候通过cookie来获取csrf的value

本版积分规则