codeigniter csrf无法在safari中工作

时间:2014-05-05 09:49:51

标签: jquery ajax codeigniter csrf

我使用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 
    }
  }
});

1 个答案:

答案 0 :(得分:0)

好的,如果有人正在寻找,我找到了答案。当您的应用在iframe中运行时,CSRF无法在Safari中运行。 Safari默认阻止第三方cookie。因此,为了创建iframe应用程序,有两种方法

  1. 创建无会话的单页应用
  2. 创建首先重定向到您网站的应用,以便他们可以创建会话,然后重定向回源网站。
  3. Tictail使用第一个,而shopify使用第二个。