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

从iframe访问AWS ELB时遭遇混合内容错误的排查求助

R Shiny应用iframe嵌入混合内容问题排查方案

核心现象

  • 直接访问https://example.com/shiny/rstudio(含参数)时,HTTP/HTTPS均正常加载
  • 从HTTPS域名https://website.com/的iframe嵌入该应用时,控制台触发混合内容错误:

    Mixed Content: The page at 'https://website.com/' was loaded over HTTPS, but requested an insecure frame 'http://example.com/shiny/rstudio/?key=7178946820872'. This request has been blocked; the content must be served over HTTPS.

  • 但iframe的src明确设置为HTTPS,错误却显示请求转向了HTTP

排查步骤

1. 检查Shiny应用内部的URL生成与重定向逻辑

  • 排查Shiny代码中是否存在硬编码的HTTP地址,比如跳转链接、静态资源引用、API请求等
  • 确认Shiny服务器配置(如shiny-server.conf)中是否启用forceSSL,确保应用强制使用HTTPS协议
  • 检查应用是否依赖X-Forwarded-Proto头判断请求协议,若负载均衡未传递该头,应用会误认为请求是HTTP

2. 负载均衡器的协议转发配置

  • 验证HTTPS监听器是否配置了X-Forwarded-Proto请求头,值设为https,确保后端EC2实例能识别原始请求协议
  • 检查目标组的转发规则,确认是否保留了客户端请求的所有协议相关头信息
  • 排查负载均衡器的HTTP→HTTPS重定向规则,确认带参数的请求不会被错误重定向到HTTP

3. 浏览器请求流程验证

  • 清除浏览器缓存(含Cookie、静态资源缓存)后重新测试,避免旧缓存导致的异常跳转
  • 打开浏览器开发者工具「网络」面板,跟踪iframe请求的完整流程:
    • 确认初始请求为HTTPS,查看是否存在3xx重定向到HTTP的情况
    • 检查响应头中的Location字段,若为HTTP地址,定位重定向的发起源

4. 域名解析与缓存验证

  • 检查Route 53的域名记录,确认example.com仅指向HTTPS负载均衡器,无冲突的HTTP类型记录(如A/CNAME)
  • 使用终端命令测试请求流程,查看是否存在隐性重定向:
    curl -L -v "https://example.com/shiny/rstudio?key=7178946820872"
    
    若输出中出现Location: http://example.com/...,说明重定向是问题根源

5. 安全头部验证

  • 检查https://example.com/shiny/rstudio的响应头,确认X-Frame-Options未设置为DENY或SAMEORIGIN(虽不直接导致混合内容,但可能叠加影响加载)
  • 验证嵌入页面https://website.com/的内容安全策略(CSP),确认允许加载example.com的HTTPS资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:24:25