无法访问响应头(春季会话发送的x-auth-token)

问题描述 投票:0回答:1

我正在使用

  • 弹簧会话1.3.1
  • 弹簧引导1.5.9
  • 我的REST API的jax-rs

我执行了以下操作以启用SpringSession

AP里CA tion.properties

### Spring Session
spring.session.store-type=jdbc

HTTP session config.Java

@Configuration
public class HttpSessionConfig
{
    @Bean
    public HttpSessionStrategy httpSessionStrategy() {
        return new HeaderHttpSessionStrategy();
    }
}

正在创建数据库表,一切正常。现在我想通过调用/login登录我的API。我现在不明白的是,如何在响应中访问春季会话发送的x-auth-token。在chrome dev工具中,我可以清楚地看到x-auth-token包含在响应头中。

Request Response

但是当我尝试使用angularjs httpclient访问标头时,我甚至看不到它。

this.http.post(this.apiBaseURL + "api/session/login", {
    username: username,
    password: password,
    platform: 'webapp',
    platformVersion: '0.1',
    apiLevel: 1
}, { observe: 'response' })
.subscribe(data => {
    console.log(data.headers.keys());
});

控制台输出:

enter image description here

spring spring-session
1个回答
3
投票

这可以通过在标题中允许Access-Control-Expose-Headers来解决。 x-auth-token是一个自定义标题,需要通过允许上面的标记暴露给外界。您可以使用以下代码来获得此解决方案。

@Configuration
public class WebSecurityCorsFilter extends OncePerRequestFilter {

    @Override
    public void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        res.setHeader("Access-Control-Allow-Credentials", "x-auth-token");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.