我已经在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?
答案 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。