csrf令牌已配置,但post请求仍无法在spring boot应用程序中工作

qc6wkl3g  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(419)

我有一个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令牌,并将其在标头中传递给slam api

在此之后,我只是发送请求,但我仍然得到403禁止。另一方面,如果我使用下面的配置禁用csrf令牌。post请求正在成功运行。

http.csrf().disable()

通过 Postman 的post请求,使csrf令牌正常工作,我缺少了什么?

wnavrhmk

wnavrhmk1#

spring的文档说明了以下内容:
默认情况下,cookiecsrftokenrepository将写入名为xsrf token的cookie,并从名为x-xsrf-token的头或http参数_csrf读取它。这些默认值来自angularjs
在您提供的 Postman 图像中,我只能看到作为cookie的xsrf令牌,但没有标头。您需要从该cookie中提取值,并以适当的头或适当的查询参数将其发送回。

相关问题