提问者:小点点

在第二个请求上避免codeigniter中的错误403


我不能理解为什么我不能做一个以上的请求而不刷新页面。

任何请求都运行良好,但是如果我需要执行另一个请求(不要介意它是否相同)。。。 我不能! 我需要刷新页面来执行一个新的请求,否则,我将得到错误403。

如果你问我要密码。。。 我不知道您到底需要什么,因为所有的代码都在工作,只是,任何请求都在完成刷新页面。

我不喜欢,因为我认为这不是专业的。

我需要在codeigniter中更改什么以允许多个请求而不刷新页面? 我找不到了!

有人帮忙吗?

@Vickel这是其中一个请求(都差不多,只是url和数据)。。。 没有表格。

function set_tracking(order_id)
{
    $.ajax({
        type: "POST",
        data: {
            order_id: order_id
       },
       url: trackingURL,
       beforeSend: function() {
          $('.lds-default').removeClass('hidden');
       },
       success: function (response) {
           console.log(response);
           if(response.error)
           {
                show_form_errors(lang['productions_error_not_set_tracking']);
           } else {
               $('#set_tracking .modal-title').html(lang['productions_set_tracking_title']);
               $('#set_tracking').modal('show');

               $('#set_tracking #order_id').val(order_id);
           }
       },
       error: function (event) {
           if (event.status !== 401) {
               show_form_errors(lang['companies_error_deleting_segment']);
           }
       },
       complete: function() {
           $('#confirm_message').modal('hide');
           $('.lds-default').addClass('hidden');
       }
   });
}

共1个答案

匿名用户

您将遇到一个过期的CSRF令牌。 有多种解决方法(每种方法的复杂度和安全级别不同)

1.-完全禁用CSRF(不建议使用,除非您的所有表单都位于安全区域内,每个人都已登录并且无法获得跨域请求,这是不可能的。

2.-定义CSRF功能的例外情况。 在application/config/config.php中,您可以找到一个名为$config['CSRF_exclude_URIS']的数组,在该数组中,您可以添加希望不强制CSRF检查的所有控制器/方法对

3.-禁用CSRF再生。 在application/config/config.php中,可以将$config['CSRF_Regenerate']设置为false。 这将防止在每次请求后重新生成CSRF令牌,这将允许您在不被CSRF检查阻止的情况下进行多次提交

4.-在第一次提交后手动获取一个重新生成的令牌,并与第二次提交一起传递。 这是解决问题的最安全的方法,但也是最复杂的。 您可以在这里的CodeIgniter的安全类文档中深入了解这一点