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

Angular 11中无法获取Spring Boot响应头的问题求助

问题原因及解决方案

这问题我之前踩过一模一样的坑!核心原因是浏览器的CORS(跨域资源共享)策略限制——你在Spring Boot里自定义的link响应头属于非标准头,浏览器默认不会把它暴露给前端JavaScript代码,哪怕服务器确实返回了这个头。而Postman这类工具不受浏览器的CORS规则约束,所以能直接看到所有响应头。

具体解决方案

你需要在Spring Boot端明确配置允许暴露这个自定义头,有两种常用方式:

1. 局部接口配置(单接口生效)

直接在你的控制器方法上添加@CrossOrigin注解,指定要暴露的头:

@CrossOrigin(exposedHeaders = "link") // 新增这行
@GetMapping("/page")
public ResponseEntity<?> getAllPageable(@PageableDefault(size = 10, page = 0) Pageable pageable, HttpServletRequest request) {
    // 原有代码逻辑不变
}

2. 全局CORS配置(所有接口生效)

如果你的项目有多个跨域接口需要暴露自定义头,推荐写一个全局配置类:

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 匹配所有接口路径
                .allowedOrigins("http://localhost:4200") // 替换成你的Angular应用实际地址
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法
                .allowedHeaders("*") // 允许的请求头
                .exposedHeaders("link"); // 关键:暴露自定义的link响应头
    }
}

验证修改

配置完成后,重启Spring Boot服务,再用Angular请求接口,你就能通过res.headers.get('link')拿到对应的头值了。如果之后还有其他自定义响应头需要前端读取,记得也把它们加入到exposedHeaders的列表里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:59:08