HTTP部署Shiny服务时Mapdeck地图瓦片无法加载问题问询
Mapdeck HTTP站点Mapbox资源加载故障排查解答
故障根因
- 该问题是Chrome 115+、Edge 115+、Firefox 117+等主流浏览器近段时间正式落地的**私有网络访问(Private Network Access, PNA)**安全特性导致,不属于Mapbox API的规则更新,近期全球有大量同类应用开发者反馈相同问题,和浏览器版本推送节奏完全匹配。
- 该安全特性的核心规则为:从非安全上下文(即HTTP协议的公网站点)发起的跨域请求,若目标资源被浏览器判定为处于更私密的地址空间,请求会被CORS策略直接拦截。
- 「本地RStudio运行正常、公网HTTP部署版本异常」的表现完全符合该特性逻辑:本地运行Shiny应用时属于localhost本地上下文,不会触发PNA拦截;公网HTTP站点的请求则会被限制。
可行解决方案
永久方案(推荐使用)
给EC2 Shiny Server服务配置HTTPS协议,无需修改任何应用代码即可彻底解决问题:
- 申请免费SSL证书,在EC2实例上部署Nginx作为反向代理
- 配置Nginx将80端口的HTTP请求重定向到443端口的HTTPS服务,同时适配Shiny Server的代理规则
- 配置完成后站点以HTTPS安全上下文运行,PNA限制会自动解除,所有Mapbox资源均可正常加载。
临时测试方案(仅适用于内部调试,不推荐对外使用)
如果需要临时验证功能,可要求访问设备调整浏览器设置绕过限制:
- Chrome/Edge用户在地址栏输入
chrome://flags/#block-insecure-private-network-requests,将该选项设置为Disabled后重启浏览器即可临时绕过拦截,该方案仅对单设备生效,无法覆盖普通访问用户。
内容的提问来源于stack exchange,提问作者wdbspe-phd
相关产品推荐
相关产品推荐

