自定义标题已从我的请求中删除

时间:2019-12-30 10:10:15

标签: typescript spring-boot cors axios fetch

我正在尝试将我的React应用到Spring Boot后端的get请求中的Authorization标头添加到我的get请求中。我已经尝试了fetch和axios:

fetch('http://127.0.0.1:8080/api/tender', {
            method: 'GET',
            headers: {
                Authorization: 'Bearer' + token,
                'Access-Control-Allow-Origin': '*'
            }
        });

axios.defaults.headers.common['Authorization'] = 'Bearer' + token;
axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';
axios.get('http://127.0.0.1:8080/api/tender').then((res) => console.log(res));

从devtools查看我的原始标头:

Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Accept-Language: nb-NO,nb;q=0.9,no-NO;q=0.8,no;q=0.6,nn-NO;q=0.5,nn;q=0.4,en-US;q=0.3,en;q=0.1
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: GET
Access-Control-Request-Headers: access-control-allow-origin,authorization
Referer: http://localhost:3000/import
Origin: http://localhost:3000
DNT: 1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: */*

以某种方式在调用api之前删除了我的自定义标头,并且出现以下错误:Missing security token, please log in如果我编辑并重新发送相同的请求,并向标头添加Authorization,则api响应200

编辑:

忽略http选项方法的令牌验证将给出200响应。但是我的最初请求从未运行。我希望我的get-request只要option方法返回OK即可运行

2 个答案:

答案 0 :(得分:0)

我不确定这是否可以解决您的问题,但是在“承载者”之后是否不缺少空格?

'Bearer'+token => 'Bearer '+token ?

答案 1 :(得分:0)

我的Spring Boot后端后端未正确处理预检选项请求。结果我错过了cors配置:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .httpBasic().disable()
                .cors().configurationSource(request -> new CorsConfiguration().applyPermitDefaultValues())
                .and()
                .csrf().disable();
    }
}

此配置解决了该问题。