如何从CORS / Spring安全性中获取x-auth-token
?
我正在使用Angular 4并且它没有返回x-auth-token
。只需Cache-Control
,Expires
和Pragma
。在chrome中的网络选项卡中,它确实显示了我的所有响应标头,但我不允许通过Angular的响应方法获取它们Headers in Angular explained
.map((res: any) => {
let authToken = res.headers.get("x-auth-token");
如果我null
,上面只会打印console.log
。
我在登录时收到403()
,直到我在spring-boot的安全性中添加了CORS
配置。
由于这样做,我在网络标签中获得200
但不允许获取令牌。
CORS配置:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
// .allowedHeaders("x-auth-token")
// .exposedHeaders("x-auth-token");
}
};
}
我不得不发表评论:
// .allowedHeaders("x-auth-token")
// .exposedHeaders("x-auth-token");
因为我添加它们后会在登录时获得403()
,所以我的实施显然是错误的。
答案 0 :(得分:0)
这里有一个问题。默认情况下,Spring CORS不允许授权。您已获得以下标题,x-auth-token
将被传递。
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedHeaders("x-auth-token","Authorization","Access-Control-Allow-Origin","Access-Control-Allow-Credentials")
.exposedHeaders("x-auth-token","Authorization","Access-Control-Allow-Origin","Access-Control-Allow-Credentials")
.allowCredentials(false).maxAge(3600);
}
};
}