我在axios GET请求中设置授权标头时遇到问题。 我做了很多研究,但没有找到解决方案。此外,我检查了CORS设置,它应该没问题,请求正在邮递员或提前休息客户端,所以我不相信服务器端的问题。
我的axios请求功能
export function getUserInfo (userId) {
return function (dispatch) {
axios.get(`${ROOT_URL}/user/${userId}`, helperMethods.authorizedHeader())
.then(response => {
dispatch({type: USER_INFO, payload: response.data.message});
})
.catch(error => {
console.log('something went wrong: ', error);
});
};
}
Helper方法(返回有效对象,我调试了它)
export function authorizedHeader () {
let token = sessionStorage.getItem(TOKEN);
if (!token) {
token = localStorage.getItem(TOKEN);
}
return {
headers: {
'Accept': 'application/json',
'Authorization': `${token}`
}
};
}
和CORS设置:
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
如果您有任何建议,请与我分享。
谢谢
答案 0 :(得分:0)
最后,我发现了问题。问题在于我在服务器端的CORS配置。当请求被触发时,它首先进入弹簧CORS过滤器,这是拒绝请求,并且它从不触发我的CORS过滤器。 所以我必须设置触发顺序,如下所示:
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(-110);
这是完整更新的CORS配置:
@Bean
public FilterRegistrationBean platformCorsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration configAutenticacao = new CorsConfiguration();
configAutenticacao.setAllowCredentials(true);
configAutenticacao.addAllowedOrigin("*");
configAutenticacao.addAllowedHeader("Authorization");
configAutenticacao.addAllowedHeader("Content-Type");
configAutenticacao.addAllowedHeader("Accept");
configAutenticacao.addAllowedMethod("POST");
configAutenticacao.addAllowedMethod("GET");
configAutenticacao.addAllowedMethod("DELETE");
configAutenticacao.addAllowedMethod("PUT");
configAutenticacao.addAllowedMethod("OPTIONS");
configAutenticacao.setMaxAge(3600L);
source.registerCorsConfiguration("/**", configAutenticacao);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(-110);
return bean;
}