在token匹对不通过的时候在response响应头中加了一个字段flag

httpServletResponse.addHeader("FLAG", "-1");

这样前台是访问不到flag的

解决思路:暴露请求头中的某些字段

方法一:cros中统一暴露

public class CorsConfig {
    /**
     允许任何域名使用
     允许任何头
     允许任何方法(post、get等)
     */
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // // addAllowedOrigin 不能设置为* 因为与 allowCredential 冲突,需要设置为具体前端开发地址
        corsConfiguration.addAllowedOrigin("http://localhost:8080");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addExposedHeader("flag");/*暴露哪些头部信息 不能用*因为跨域访问默认不能获取全部头部信息*/
        // allowCredential 需设置为true
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}

方法二:在设置flag时同时暴露字段

httpServletResponse.addHeader("FLAG", "-1");
httpServletResponse.setHeader("Access-Control-Expose-Headers","flag");

实现效果:
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐