我使用j查询ajax函数发送ajax请求。我正在使用codeigniter 2.1.4。我也启用了CSRF。问题是当我使用POST方法发送ajax请求时,它不起作用,但在类型更改为GET时有效。但即使我将类型更改为GET,它也不会重定向到正确的页面,从而产生302错误。
我的代码是这样的。
$.ajax({
url: '<?php echo base_url() ?>url_to_function/',
data: some_data+"&<?php echo $this->security->get_csrf_token_name(); ?>=<?php echo $this->security->get_csrf_hash(); ?>",
type: 'GET',
dataType: 'json',
success: function(response) {
if ( response) {
self.location.href = '<?php echo base_url(); ?>url_to_function/';
}
else {
// error
}
}
});
答案 0 :(得分:0)
好的,如果有人正在寻找,我找到了答案。当您的应用在iframe中运行时,CSRF无法在Safari中运行。 Safari默认阻止第三方cookie。因此,为了创建iframe应用程序,有两种方法
Tictail使用第一个,而shopify使用第二个。