javascript - 在 javascript POST 中发送 CSRF token 会出现错误

标签 javascript spring spring-security csrf csrf-protection

在我的网络应用程序中,我使用 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/

相关文章:

javascript - Ember - 计算属性(这是一个数组)在将项目添加到数组时不获取更新值

java - Spring @RequestMapping 重定向到带有附加信息的相同路径

Java Future - Spring Authentication 在 AuditorAware 中为空

java - 仅将异常处理绑定(bind)到 @ControllerAdvice 类

java - 具有多个身份验证提供程序的 Spring 安全性 - UsernameNotFoundException

javascript - 选择对象数组中的唯一项目

javascript - 如何使用 Sencha Touch 正确删除生成的 HTML

javascript - 为什么此代码适用于输入文本框,但不适用于 contenteditable div?

java - Spring boot AuthenticationSuccessHandler 被忽略

spring-mvc - Spring 安全 : use hashed password stored in database as salt of password encoder