java - 在 Spring 中禁用 CSRF 验证

标签 java spring spring-boot spring-mvc

我想使用以下值从 Ruby 代码发送 http 请求:

http://some_domain.com?key=value&t5052&key=value&key=value

我有这个 Spring 配置:

@PostMapping(consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, value = "/v1/notification")
  public ResponseEntity<String> handleNotifications(@RequestBody MultiValueMap<String, Object> keyValuePairs) {
     .....
    return new ResponseEntity<>(HttpStatus.OK);
  }

Spring 转换配置:

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.removeIf(converter -> converter instanceof MappingJackson2XmlHttpMessageConverter);
        converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
        converters.add(new MappingJackson2XmlHttpMessageConverter(
                ((XmlMapper) createObjectMapper(Jackson2ObjectMapperBuilder.xml()))
                        .enable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION)));
        converters.add(new MappingJackson2HttpMessageConverter(createObjectMapper(Jackson2ObjectMapperBuilder.json())));
    }

但是我收到错误:

<h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>    
  <p>You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.</p>
  <p>If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for &#39;same-origin&#39; requests.</p>

你知道我该如何解决这个问题吗?我可以在 Spring 中禁用此 CSRF 检查吗?

最佳答案

您可以通过创建如下配置来禁用 CSRF:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  @Override
   protected void configure(HttpSecurity http) throws Exception {
       http.csrf().disable();
  }
}

关于java - 在 Spring 中禁用 CSRF 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56761029/

相关文章:

java - 为 Spring Boot 实现字节服务

java - 检查 Java 中对象是否被强制转换为其动态类型

java - 如何将高可用性引入​​简单的 JPA 应用程序?

java - Spring Boot 触发完全重启,而不是在静态文件发生更改时重新加载

java - 在 BeforeClass junit 的 TestExecutionListener 类中使用 Autowiring

spring - 使用Gradle下载Spring 4源

java - 如何从 jar 文件运行 Maven Failsafe 集成测试?

java - 在 Activity 中设置计时器的最有效方法

java - Java有权威的公共(public)图书馆索引吗?

java - 是否可以将 spring.cloud.config.uri 与 docker run 命令一起传递?