我在Elastic beanstalk上部署了一个Spring boot应用程序,在S3上部署了一个React应用程序作为一个静态网站。我使用Cloudfront处理这两个应用程序之间的路由,一切正常。我可以使用Postman获取Spring boot (连接到Postgres RDS)上的所有数据,还可以向安全端点(使用Spring安全性)发送登录调用。此外,在添加所需的标头后,我可以使用postman调用所有安全端点。
我的问题是,当我尝试通过CloudFront调用EBS Spring boot上的安全端点时,我得到了403。所有其他端点都工作得很好(其中没有spring安全性)。只有被保护的端点才返回403。
我使用一个名为Authentication with header的头(我在调用login时生成)将请求发送到后端。
有人知道我在这里错过了什么吗?谢谢!
发布于 2020-11-30 03:15:13
好了,我找到答案了。(我为这个问题忙碌了大约两天,20分钟后我就找到了答案,我把问题放到了StackOverflow上) :)
答案是:添加白名单头部。这是身份验证头。由于Cloudfront在发送请求时删除了此头,因此我必须将其列入白名单)。
如何添加白名单头部:
转至you Distribution -> Behavior ->选择EBS behavior ->创建新的缓存策略->选择Headers ->,然后选择白名单
我希望我可以帮助别人解决这个问题,而不用像我一样花两天的时间来寻找答案:)
https://stackoverflow.com/questions/65063529
复制相似问题