我正在尝试将我的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即可运行
答案 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();
}
}
此配置解决了该问题。