[英]AWS S3 public bucket hosting static webpage behind a proxy
我正在尝试使用 S3 访问一些可用的网页,并且使用如下所示的 url 可以正常工作: http : //my-crazy-bucket.s3-website-us-east-1.amazonaws.com
事情是.. 我需要使用 express 将这些页面的 url 隐藏在 javascript 编写的代理应用程序后面。 在使用弹性豆茎代替 S3 之前,我能够做到这一点。 但是当我尝试将这些静态页面从 EB 迁移到 S3,并使用给定 s3 存储桶的代理 url 访问它时。 这导致了以下错误:
404 Not Found
Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: my-proxy-url.com
RequestId: some stuff...
HostId: some more stuff...
我希望看到我的疯狂斗,而不是my-proxy-url.com在BucketName
这个错误的。
我确实在存储桶配置中将 CORS 配置为宽松的,如下所示:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://my-proxy-url.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
但问题仍然存在。
你们认为我需要任何额外的 S3 配置还是问题出在我的代理中(即使它在指向旧弹性 beanstalk 实例中托管的相同静态页面之前工作)?
不是 CORS 问题。
在发送出站请求之前,您必须在代理内部更改(重写)传入请求的 HTTP Host:
标头,以便 S3 了解有问题的存储桶是my-crazy-bucket.s3-website-us-east-1.amazonaws.com
。
仅将请求发送到 S3 是不够的。 它需要寻址到正确的存储桶,S3 通过查看传入的Host:
存储桶端点或存储桶名称的标头来确定是哪个存储桶。
没有看到您的代理代码,我不能更具体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.