You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular发送的Authorization请求头为null问题求助

排查步骤

1. 确认浏览器实际发送的请求头

打开浏览器开发者工具的Network面板,定位到目标请求:

  • 查看Request Headers区域,确认实际发送的请求中是否存在Authorization: Bearer xxx
  • 注意:OPTIONS预检请求不会携带自定义请求头,这是浏览器的正常机制,只需检查后续的实际业务请求(GET/POST等)是否带了头

2. 调整Spring CORS配置细节

你当前配置的allowedOriginPatterns("*")结合allowCredentials(true)在部分浏览器环境下可能存在兼容性问题,建议改为指定具体的前端域名:

@Override
public void addCorsMappings(CorsRegistry corsRegistry){
    corsRegistry.addMapping("/**")
            .allowedOriginPatterns("http://localhost:4200") // 替换为你的Angular前端实际地址
            .allowedMethods("*")
            .allowedHeaders("*")
            .allowCredentials(true)
            .maxAge(3600L);
}

注:exposedHeaders("Authorization")用于让前端读取响应头中的Authorization字段,和请求头无关,可按需移除

3. 修正自定义过滤器的执行逻辑

如果你的自定义过滤器在Spring内置CORS过滤器之前执行,可能会导致请求头未被正确处理。建议在过滤器中先放行OPTIONS预检请求:

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
    // 优先处理OPTIONS预检请求,直接放行
    if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
        response.setStatus(HttpServletResponse.SC_OK);
        filterChain.doFilter(request, response);
        return;
    }
    // 再处理业务请求的Authorization头解析逻辑
    String authHeader = request.getHeader("Authorization");
    // ... 你的后续业务代码
}

4. 优化Angular拦截器的请求克隆逻辑

虽然你的拦截器代码逻辑正确,但可以用set替代append避免重复添加请求头的问题,同时增加更明确的日志验证:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const jwtToken = this.sharedService.getJwtToken();
    let modifiedReq = req;
    if(jwtToken){
        modifiedReq = req.clone({
            headers: req.headers.set('Authorization', `Bearer ${jwtToken}`)
        });
        // 打印验证头信息
        console.log('请求头列表:', modifiedReq.headers.keys());
        console.log('Authorization值:', modifiedReq.headers.get('Authorization'));
    }
    return next.handle(modifiedReq);
}

5. 验证Token本身的有效性

把前端打印的JWT Token复制到Postman中测试,确认Token格式正确、无多余空格或换行符,且能被后端正常解析。

内容的提问来源于stack exchange,提问作者user19845343

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:50:30