React,SpringBoot和CSRF

时间:2019-10-23 19:44:59

标签: reactjs spring spring-security axios csrf

我正在使用Spring Boot Security:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

我已禁用CSRF:

@Slf4j
@Configuration
public class AuthConfig extends WebSecurityConfigurerAdapter {

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

    }
}

使用npm start,在我的React应用程序中运行以下代码:

         axios
            .post(this.state.targetUrl+'/mpbpm/triggerProcess', {
                headers: {
                    'Access-Control-Allow-Origin': '*',
                    'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS'
                }
            })

结果是:

Failed to load http://localhost:8080/mpbpm/triggerProcess: Response for preflight has invalid HTTP status code 401.

为什么失败了?我正在尝试学习React,我有一些伪代码试图从服务器检索值。使这项工作最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

此处:

         axios
            .post(this.state.targetUrl+'/mpbpm/triggerProcess', {
                headers: {
                    'Access-Control-Allow-Origin': '*',
                    'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS'
                }
            })

您要添加自定义标头并发送跨域提取,从而触发预检请求。服务器没有为这种流量做好准备,一切都会导致错误。删除那些标题。