在我的网络应用程序中,我使用 spring security 3.2.x 并且正在进行 CSRF 验证。在我的登录页面中,我已成功完成此操作。但在里面,我有一个按钮,按钮操作是在 JavaScript 中编写的
$('#download').click(function(){
var paramValue = '${params}';
var params = $('#params_').clone()
$('<form target="_blank" action="report" method="post"></form>').append(params).appendTo('body').submit().remove();
});
现在的问题是当我单击该按钮时它给出了以下错误
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
我认为这是因为发送 CSRF token 失败。谁能告诉我如何解决这个问题。
提前致谢
最佳答案
是的,正如您所说,这是因为您动态创建的表单不包含有效的 CSRF token 输入。来自 Spring Security documentation :
$(function () {
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
xhr.setRequestHeader(header, token);
});
});
这会将所需的 header 添加到您的 ajax 请求中。
关于javascript - 在 javascript POST 中发送 CSRF token 会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22631347/