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

AWS环境下Angular前端与Spring Boot后端SSL连接问题求助

问题排查步骤

一、解决“内容必须通过HTTPS提供”拦截问题(ALB转发HTTP到EC2场景)

这个错误是浏览器混合内容拦截机制导致的:前端通过HTTPS加载,但Angular代码仍在调用HTTP协议的后端接口,浏览器会直接阻止这类请求。

  • 检查Angular环境配置文件(如environment.prod.ts),确认API接口基础地址apiUrl为HTTPS协议,例如https://your-alb-domain.com/api,而非http://...
  • 给Spring Boot后端配置X-Forwarded-Proto相关参数,让后端识别原始请求为HTTPS(因为ALB转发的是HTTP),避免后端返回HTTP格式的重定向或资源地址。在application.properties中添加:
    server.forward-headers-strategy=framework
    server.tomcat.remote-ip-header=x-forwarded-for
    server.tomcat.protocol-header=x-forwarded-proto
    
  • 调整CloudFront行为设置:将“查看器协议策略”设为“重定向HTTP到HTTPS”,强制所有前端请求走HTTPS,避免触发混合内容拦截。

二、解决ALB转发HTTPS到EC2时的403 Forbidden问题

  • 安全组配置检查:
    • ALB安全组:允许入站443端口(可限制为前端域名IP或全部),出站允许443端口访问EC2安全组
    • EC2安全组:仅允许来自ALB安全组ID的入站443端口请求,不要开放到全部IP
  • 目标组健康检查验证:
    • 查看ALB目标组健康状态,若EC2实例显示“不健康”,ALB会拒绝转发请求并返回403。确认健康检查路径正确(如/actuator/health,需Spring Boot开启actuator),端口设为443,协议为HTTPS
  • Spring Boot SSL配置检查:
    • 注意:AWS ACM公网证书无法直接导出到EC2,若要ALB转发HTTPS到EC2,需使用ACM私有CA证书或自行生成证书。在application.properties中配置:
      server.port=443
      server.ssl.key-store-type=PKCS12
      server.ssl.key-store=/path/to/your-cert.p12
      server.ssl.key-store-password=your-password
      server.ssl.key-alias=your-alias
      
    • 若不想在EC2上配置SSL,建议回到第一种场景(ALB终止SSL,转发HTTP到EC2),这是更常见的AWS部署方式
  • CORS配置检查:
    • Spring Boot的CORS配置需允许前端的HTTPS域名(如https://your-cloudfront-domain.com),避免仅放行HTTP域名导致HTTPS请求被拒。示例配置:
      @Configuration
      public class CorsConfig implements WebMvcConfigurer {
          @Override
          public void addCorsMappings(CorsRegistry registry) {
              registry.addMapping("/api/**")
                      .allowedOrigins("https://your-cloudfront-domain.com")
                      .allowedMethods("GET", "POST", "PUT", "DELETE")
                      .allowedHeaders("*")
                      .allowCredentials(true);
          }
      }
      
  • ALB证书关联检查:确认ALB的HTTPS监听器已正确关联AWS ACM证书,证书覆盖域名包含ALB的访问域名。

三、通用排查点

  • 打开浏览器开发者工具“网络”标签,查看被拦截/返回403请求的详细信息:请求URL、请求头(尤其是Origin、X-Forwarded-Proto)、响应头,这些信息能快速定位问题
  • 检查EC2系统日志和Spring Boot应用日志,确认请求是否到达后端、是否有报错信息
  • 清除CloudFront缓存:若之前HTTP请求被缓存,可能导致混合内容问题,手动清除缓存后再测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:05:59