当尝试通过我的网站上的完整URL访问页面时,收到访问拒绝 [英] Receive AccessDenied when trying to access a page via the full url on my website

查看:23
本文介绍了当尝试通过我的网站上的完整URL访问页面时,收到访问拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一段时间,我只是简单地将我网站的内容存储在S3存储桶中,并且可以通过完整的URL访问所有页面。我想通过添加一个SSL来使我的网站更安全,所以我创建了一个CloudFront分发来指向我的S3存储桶。

站点将正常加载,但如果用户尝试刷新页面或尝试使用完整的url(即www.Example.com/home)访问页面,他们将收到AccessDended页面。

我的S3存储桶上有一个策略,该策略仅限制对源访问标识的访问,并将index.html设置为我的域根对象。

我不明白我错过了什么。

要演示,请随时访问我的site

您将注意到它如何将您重定向到kurtking.me/home。要重现该错误,请尝试刷新页面或通过完整URL(即kurtking.me/life)访问页面

我非常感激任何帮助,因为我一直在努力解决这个问题,并寻找答案已经有几天了。

推荐答案

我已经弄清楚了,希望在其他人遇到此问题时发布我的解决方案。

这个问题是由于ANGLE是一个SPA(单页应用程序),而我使用S3存储桶来存储它。当您尝试通过url访问转到特定页面时,CloudFront将使用(例如,/About)并转到您的S3存储桶中查找该文件。因为ANGLE是一个SPA,所以从技术上讲,该文件不存在于您的S3存储桶中。这就是我收到错误的原因。

我需要做些什么来修复它

如果您在CloudFront中打开您的发行版,您将看到一个"Error Pages"标签。我不得不添加两个处理400和403的"自定义错误响应"。400和403的细节是相同的,所以我只包括一张400的照片。请参见下面的内容:

基本上,您正在告诉CloudFront,不管是400还是403错误,都要重定向回index.html,从而让ANGLE来决定它是否可以转到路径。如果您想为客户端提供400或403错误,则需要以角度定义这些路径。

设置两个自定义错误响应后,我部署了CloudFront解决方案和wallah,它起作用了!

我使用以下article帮助我找到此解决方案。

这篇关于当尝试通过我的网站上的完整URL访问页面时,收到访问拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆