从AWS Amplify部署的HTTPS(SSL)客户端向HTTP端点发出API请求

时间:2020-03-30 19:29:04

标签: amazon-web-services ssl xmlhttprequest aws-amplify mixed-content

我已经在AWS EC2实例中部署了Backend / API服务器,该实例在没有SSL的情况下加载,其网址类似于'http://ec2-67-ap-southeast-3.compute.amazonaws.com'

我已经使用 AWS AMPLIFY 控制台部署了我的React Frontend / Client。这会自动将 SSL 添加到生产分支URL,并且该URL类似于https://branch.d3as6d542.amplifyapp.com

现在的问题是,我无法从客户端向我的服务器发出任何API / HTTP请求。并出现以下错误,

Mixed Content: The page at 'https://branch.d3as6d542.amplifyapp.com' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://ec2-67.ap-southeast-3.compute.amazonaws.com/api/profile’. This request has been blocked; the content must be served over HTTPS.

我能够从客户端本地主机开发环境进行此API调用。但是由于HTTP的不匹配,导致从AWS AMPLIFY SERVER中出错。

如何解决此问题,或者有什么方法可以删除自动添加的AWS AMPLIFY的SSL?

3 个答案:

答案 0 :(得分:1)

您可以使用https支持创建后端的CloudFront分发。

答案 1 :(得分:0)

您可以使用cors everywhere代理。它以https托管并且是代理,因此您只需在api端点网址之前添加它即可。

例如http://myapi.com/v1/users可以写为https://cors-everywhere-me.herokuapp.com/http://myapi.com/v1/users

这可以解决问题。我个人将其用于您提到的相同设置。

如果不想使用他们的代理,则可以创建自己的代理。

答案 2 :(得分:-1)

如果您不需要身份验证,则可以在S3中运行前端而不是AWS Amplify。只需构建您的react应用并上传构建文件,然后在AWS中正确设置访问权限即可。

您不会遇到混合内容问题,因为AWS S3终端节点也为http。