首先,很少发生。表单本身已成功提交500次以上。我们收到了大约3份报告,其中用户收到了"遇到了错误:您所请求的操作不被允许" 。
此特定错误可以在安全类php代码中找到,并且仅在 csrf令牌没有,或者如果缺少一个或两个(cookie / post)时显示。
以下是一些相关的配置值:
$config['cookie_prefix'] = 'prefix_';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf';
$config['csrf_cookie_name'] = 'csrf';
$config['csrf_expire'] = 86400;
$config['csrf_regenerate'] = FALSE;
如上所述,几乎在所有情况下,用户都没有提交表单的问题。当用户遇到问题时,我尝试通过自己提交表单来复制错误,使用相同的输入值和相同的浏览器/ os (启用了Cookie和javascript,没有浏览器插件)。但我无法模拟错误。
什么可能导致Codeigniter有时抛出错误?
答案 0 :(得分:0)
您是否允许用户提交表单两次(在第一次提交后您没有添加表单阻止程序,因此在第一次请求处理时,用户可以再次提交具有相同CSRF值的表单)?如果是这样,当用户提交表单两次时,第一个请求调用CSRF重新生成csrf-value和用户发送的第二个请求,发送旧的CSRF值,结果您收到此错误。