AWS在调用API时阻止混合内容

时间:2017-12-19 01:06:27

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

希望它有所帮助。

答案 2 :(得分:0)

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

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

参考: