问题
spring security使用jwt做认证,在发送请求时,在axios请求头里增加一个字段:
httpService.interceptors.request.use(
config => {
// token存在vuex里
if (store.state.user.token) {
config.headers['Access-Token'] = store.state.user.token;
}
return config;
},
error => {
return Promise.reject(error);
}
)
但是后端没有办法获得Access-Token这个请求头字段,前端报CORS错。打开浏览器开发者工具,发现axios在发送真正需要的请求前还发送了一次OPTIONS请求。而后端没有处理这个请求的代码。
解决
如何处理这个请求呢? 在配置spring security时,通过HttpSecurity实例的cors()方法增加一个org.springframework.web.filter.CorsFilter就行了。
protected void configure(HttpSecurity httpSecurity) {
httpSecurity.cors()
// 以下省略
}