【发布时间】:2023-03-05 09:23:02
【问题描述】:
我使用 codeigniter 启用了 csrf,它在 FireFox 和 Google Chrome 中正常工作。但是在 IE 中,它在 Web 开发人员工具网络面板中显示此错误:
详细视图:
我的$.post 电话是:
var ctn = $.cookie('csrf_cookie');
$.post('some_path', {
'my_token': ctn
}, function (data) {
if (data.res == 'something') {
//process here
}, 'json');
当我执行console.log('ctn: '+ctn) 时,ctn 的值(即保存 CSRF 令牌值的 cookie)正确显示:
ctn: 78346b5d0ec105efcce796f93ecc3cbb
任何帮助或调试更多的建议将不胜感激。
P.S.:我有一个vhost,我真的不知道它是否对 IE 有影响。
更新:
我已经阅读了关于 IE 中 CSRF 的问题,一些建议使用 P3P 标头,所以我将此标头添加到索引页面:
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT');
但还是有同样的问题。
还有其他建议吗?
【问题讨论】:
-
您是否尝试为请求设置 contentType:
"application/json"?附带说明:我遇到了许多问题,这些问题都来自 IE 缓存 ajax 请求...... -
我已经试过了。不工作
-
顺便说一句,IE 正在捕获请求,但由于 csrf 未经过验证而返回 500。
-
我在 csrf 上遇到了同样的问题,所以我直接在 php 文件中使用 js 并在 ajax 中传递数据,例如 data:{ 'security->get_csrf_token_name(); ?>':'security->get_csrf_hash(); ?>', 'start':convert(start), 'end':convert(end), 'allDay':allDay, 'title':'title' },它对我来说很好
标签: jquery ajax codeigniter internet-explorer csrf