Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Ajax post不工作_Html_Ajax_Csrf - Fatal编程技术网

Html Ajax post不工作

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发布一个表单。它给了我“405方法不允许”的错误。如果我把url放在html表单的动作部分,然后点击一个按钮手动提交它,同样的html文件也可以工作(所以这不是csrf问题..rite?)


可能是什么问题?

确保对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方法对此进行检查。