Cloudfront部署后出现混合内容错误,后端无法修改时有没有可行解决方案
解决方案
你遇到的是HTTPS站点禁止调用HTTP资源的浏览器混合内容拦截规则,不需要修改EC2后端服务的前提下,最优方案是通过Cloudfront多源配置代理API请求,具体操作如下:
- 进入当前关联前端S3的Cloudfront分发配置页,新增一个自定义源:
源域名填写你的EC2地址ec2-3-86-60-146.compute-1.amazonaws.com,端口指定为3030,源协议政策选择仅HTTP,不需要配置SSL相关内容。 - 新增一条缓存行为规则:
路径匹配规则填/api/*,关联刚创建的EC2源,缓存策略选择禁用缓存(动态API无需缓存),按需开启GET/POST/PUT/DELETE等允许的HTTP方法。 - 修改前端API调用地址:
把原本硬编码的EC2 HTTP地址http://ec2-3-86-60-146.compute-1.amazonaws.com:3030/api/xxx替换为相对路径/api/xxx,前端请求会自动带上当前Cloudfront的HTTPS域名,不会再触发跨协议拦截。
这套方案所有HTTPS解密都在Cloudfront层完成,Cloudfront到EC2的回源请求依然走HTTP,完全不需要修改EC2上的后端服务配置。
如果仅用于本地调试无需对外提供服务,可以临时修改浏览器安全设置,允许当前站点加载混合内容,该方案不适合生产环境使用。
内容的提问来源于stack exchange,提问作者Arefe
相关产品推荐
相关产品推荐

