Codeigniter 如何避免;您请求的操作是不允许的”;敲除postJson函数调用出错

Codeigniter 如何避免;您请求的操作是不允许的”;敲除postJson函数调用出错,codeigniter,post,knockout.js,csrf-protection,codeigniter-form-helper,Codeigniter,Post,Knockout.js,Csrf Protection,Codeigniter Form Helper,CodeIgniter在CSRF检查失败时给出错误“您请求的操作不允许”。据我所知,这意味着帖子缺少表单中的隐藏标记,该标记证明没有进行攻击 通过调用CI form_open函数自动生成令牌 在我的例子中,我使用Knockout发布ViewModel的内容以进行保存,如下所示: ko.utils.postJson($("form")[0], self.pages); 我在其他地方找到了一些简单地关闭特定页面的CSRF设置的解决方案,但这似乎不是一个好的解决方案 可能是因为没有收到令牌,所以po

CodeIgniter在CSRF检查失败时给出错误“您请求的操作不允许”。据我所知,这意味着帖子缺少表单中的隐藏标记,该标记证明没有进行攻击

通过调用CI form_open函数自动生成令牌

在我的例子中,我使用Knockout发布ViewModel的内容以进行保存,如下所示:

ko.utils.postJson($("form")[0], self.pages);
我在其他地方找到了一些简单地关闭特定页面的CSRF设置的解决方案,但这似乎不是一个好的解决方案

可能是因为没有收到令牌,所以postJson调用没有提交现有表单。有没有一种方法可以将所需的令牌与JSON数据一起提交,或者使用现有表单提交JSON数据?

尝试使用
form\u open()
form\u close

所有有帮助的表单帮助函数

或者:我认为这是时区差异造成的,因为
安全性
类取决于散列的时间。

尝试使用
form\u open()
form\u close

所有有帮助的表单帮助函数


或者:我认为这是时区差异造成的,因为
安全性
类取决于散列时间。

通常,此警告消息表示您试图使用POST HTTP谓词访问控制器,而控制器上未定义POST操作。你能检查一下这个吗?您是否确认设置CSRF可以解决您的问题?@Anzeo,我可以确认关闭CSRF可以解决问题,在这种情况下,$\u POST的值是可以的。我不知道你说我的控制器上“没有定义后期操作”是什么意思;有一个测试,看看是否设置了$\u POST,以及相关的操作,如果这是你的意思的话。我发现我可以通过设置一个表单字段来解决这个问题,该字段包含ko.utils.stringifyJson(self.pages)的结果;但是为了让它正常工作,我需要参考json2.js。它并不优雅,我希望我知道一种更好的方法。您可以发布表单HTML和控制器代码,以便我可以查看它们吗?通常,此警告消息表示您正在尝试使用post HTTP谓词访问控制器,而您的控制器上未定义post操作。你能检查一下这个吗?您是否确认设置CSRF可以解决您的问题?@Anzeo,我可以确认关闭CSRF可以解决问题,在这种情况下,$\u POST的值是可以的。我不知道你说我的控制器上“没有定义后期操作”是什么意思;有一个测试,看看是否设置了$\u POST,以及相关的操作,如果这是你的意思的话。我发现我可以通过设置一个表单字段来解决这个问题,该字段包含ko.utils.stringifyJson(self.pages)的结果;但是为了让它正常工作,我需要参考json2.js。它并不优雅,我希望我知道一种更好的方法。你能发布你的表单HTML和控制器代码,让我看看它们吗?