CodeIgniter 给出错误“不允许您请求的操作”。当它未能通过 CSRF 检查时。据我了解,这意味着 POST 缺少表单中的隐藏令牌,证明没有进行攻击。
令牌是通过调用 CI form_open 函数自动生成的。
就我而言,我使用 Knockout 发布 ViewModel 的内容以进行保存,如下所示:
ko.utils.postJson($("form")[0], self.pages);
我在其他地方找到了简单地关闭特定页面的 CSRF 设置的解决方案,但这似乎不是一个好的解决方案。
大概是因为没有收到令牌,所以 postJson 调用没有提交现有的表单。有没有办法将所需的令牌与 JSON 数据一起提交,或者将 JSON 数据与现有表单一起提交?