Html Ajax post不工作
我试图通过ajax发布一个表单。它给了我“405方法不允许”的错误。如果我把url放在html表单的动作部分,然后点击一个按钮手动提交它,同样的html文件也可以工作(所以这不是csrf问题..rite?)Html Ajax post不工作,html,ajax,csrf,Html,Ajax,Csrf,我试图通过ajax发布一个表单。它给了我“405方法不允许”的错误。如果我把url放在html表单的动作部分,然后点击一个按钮手动提交它,同样的html文件也可以工作(所以这不是csrf问题..rite?) 可能是什么问题?确保对ajax请求使用相同的方法。 也许您对表单使用“POST”方法,对ajax请求使用“GET” CSRF应该抛出403,如果a方法(POST、GET、PUT、DELETE等)不允许,您将看到405错误消息 编辑:尝试使用jquery提交表单: // change the
可能是什么问题?确保对ajax请求使用相同的方法。 也许您对表单使用“POST”方法,对ajax请求使用“GET” CSRF应该抛出403,如果a方法(POST、GET、PUT、DELETE等)不允许,您将看到405错误消息 编辑:尝试使用jquery提交表单:
// change the selector!
var data = $("form").serialize();
alert(data);
$.ajax({
type: "POST",
url: "/your-backend.php",
data: data,
}))
firebug在执行此操作时会说什么?您可以发布代码吗?您的网站将在表单中添加一个CSRF隐藏字段,以便通过CSRF验证。在执行Ajax请求时,它们没有这些隐藏字段,因此会失败。我只是查找了隐藏字段,得到了它的值,并将其添加到要作为post发送的值列表中。@Engineer-同源策略不会导致405错误。@Gavin-除非设置为这样做,否则不会。CSRF应该抛出403而不是405。这取决于基础站点的实现。如果它设置为抛出405,它会。您的后端代码是PHP吗?您是否使用第三方框架,如CodeIgniter或DJango?不,我反复检查过,它们是相同的。正如加文所说,隐藏字段(如果它存在于表单中)是原因。如何检索该隐藏字段?我使用serialize方法,警告它,找不到任何包含CSRF令牌的字段。firebug“405 Method Not Allowed”中仍存在相同错误,并且您的表单有一个带有csrf令牌的字段?不,找不到任何带有csrf令牌的字段,请使用form.serialize方法对此进行检查。