2017-04-24 108 views
0

我試圖訪問使用S3提供了一些網頁,並使用如下的URL工作正常:http://my-crazy-bucket.s3-website-us-east-1.amazonaws.comAWS S3公共桶託管靜態網頁背後的代理

事情是..我要隱藏這些頁面的網址後面的一個JavaScript書面代理應用程序,使用快遞。在使用彈性beanstalk而不是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實例中託管的相同靜態頁面之前工作)?

回答

2

不是CORS問題。

在發送出站請求之前,您必須在代理內部更改(重寫)傳入請求的HTTP Host:標頭,以便S3知道該存儲桶是my-crazy-bucket.s3-website-us-east-1.amazonaws.com

僅僅發送請求到S3是不夠的。它需要發送到正確的存儲桶,S3通過查看傳入的Host:標頭中的存儲桶端點或存儲桶名稱來確定該存儲桶是哪個存儲桶。

沒有看到您的代理代碼,我不能更具體。