CSRF 令牌已配置,但 POST 请求在 spring 启动应用程序中仍然不起作用

CSRF token is configured but still POST requests are not working in spring boot app

我有一个 starnd Spring 引导应用程序,并在我的 sprint 安全配置中配置了 csrf,如下所示:

http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and().authorizeRequests()
                .mvcMatchers(HttpMethod.POST,"/slam").authenticated()
                .antMatchers("/myPage").authenticated()
                .antMatchers("/login").permitAll()
                .antMatchers("/contact").denyAll()
                .and().formLogin().and().httpBasic();

我正在使用 CookieCsrfTokenRepository 并使用 Postman 击中 slam API 在点击此 API 之前我已经对自己进行了身份验证,并从服务器端获得了 JSESSIONI,XSRF-TOKEN 并将其传递到 header 以猛击 API

在此之后我只是发送请求,但我仍然收到 403 禁止。 另一方面,如果我使用以下配置禁用 CSRF 令牌。 Post 请求成功。

http.csrf().disable()

为了让 CSRF 令牌通过我的 POSTMAN 的 post 请求正常工作,我缺少什么?

来自 spring 的文档说明如下:

By default the CookieCsrfTokenRepository will write to a cookie named XSRF-TOKEN and read it from a header named X-XSRF-TOKEN or the HTTP parameter _csrf. These defaults come from AngularJS

在您提供的邮递员图像中,我只能看到 xsrf-token 作为 cookie,但没有 header。您需要从该 cookie 中提取值并将其发送回适当的 header 或适当的查询参数。