【问题标题】:AWS blocked mixed content when calling APIAWS 在调用 API 时阻止了混合内容
【发布时间】:2018-06-01 09:33:14
【问题描述】:

我在 digitalOcean 有一个前端应用程序,域名为 testDO。此域具有 SSL 证书。所以所有的请求都来自https://testDO.com

我在 AWS 中有一个后端服务器,它是通过将 war 文件部署到 beanstalk 中创建的。它的名称为testAWS.us-east-2.elasticbeanstalk.com

当我直接从 URL 调用 API 时,例如 http://testAWS.us-west-2.elasticbeanstalk.com/myAPI/getName 它可以工作。当我从前端调用相同的 API 时,我被阻止:混合内容。这是因为它的http而不是https吗?解决方法是什么?

【问题讨论】:

    标签: java amazon-web-services http amazon-ec2 amazon-elastic-beanstalk


    【解决方案1】:

    是的,这是因为您的 HTTPS 站点尝试通过被浏览器阻止的 HTTP 访问内容。您需要在前端服务器上同时使用 HTTPS 或代理请求,并在那里终止 SSL 并将其转发到 Beanstalk 中的 API 服务器。

    注意:由于前端和后端位于两个不同的环境中,因此为了安全起见,最好同时使用 HTTPS 而不是代理方法。

    【讨论】:

    【解决方案2】:

    您可以创建一个 CloudFront 分配并将其与 https 一起转换为 http。您还需要在响应中启用 CORS 以访问跨域域请求。

    客户端 --> CloudFront --> 您的 http API(使用 CORS 响应)。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      您需要使用您的域设置您的 AWS Elastic Beanstalk 环境,或者您可以将 HTTPS 与自签名证书一起用于开发和测试目的。

      您可以在 AWS S3 中使用上传您的前端,在 AWS 静态网页中,端点为 http,因此您不会遇到这种混合内容问题。

      参考:

      【讨论】:

        猜你喜欢
        • 2016-11-05
        • 2018-10-12
        • 2019-06-09
        • 1970-01-01
        • 1970-01-01
        • 2015-10-11
        • 2014-01-03
        • 2020-12-19
        • 1970-01-01
        相关资源
        最近更新 更多