2017-04-24 3 views
0

Ich versuche, einige Web-Seiten zuzugreifen verfügbar S3 verwendet wird, und es funktioniert gut eine URL wie folgt verwendet: http://my-crazy-bucket.s3-website-us-east-1.amazonaws.comAWS S3 öffentliche bucket statische Webseite hinter einem Proxy-Hosting

Ding ist .. Ich brauche diejenigen zu verstecken URL der Seite hinter einer Javascript-Proxy-Anwendung, mit Express. Ich konnte dies tun, bevor ich Elastic Beanstalk anstelle von S3 verwendete. Aber als ich versucht habe, diese statischen Seiten von EB nach S3 zu migrieren, habe ich mit der Proxy-URL für den angegebenen s3-Bucket darauf zugegriffen. Dies führte zu dem folgenden Fehler:

404 Not Found 
Code: NoSuchBucket 
Message: The specified bucket does not exist 
BucketName: my-proxy-url.com 
RequestId: some stuff... 
HostId: some more stuff... 

Ich habe gehofft, my-crazy-Eimer statt my-proxy-url.com im BucketName diesen Fehler zu sehen.

<CORSConfiguration> 
<CORSRule> 
    <AllowedOrigin>https://my-proxy-url.com</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <MaxAgeSeconds>3000</MaxAgeSeconds> 
    <AllowedHeader>Authorization</AllowedHeader> 
</CORSRule> 
</CORSConfiguration> 

Aber das Problem weiterhin besteht:

habe ich die CORS als permissive in den Eimer Konfiguration wie folgt konfiguriert.

Denken Sie, ich brauche eine zusätzliche S3-Konfiguration oder das Problem ist in meinem Proxy (obwohl es funktionierte vor dem Zeigen auf die gleichen statischen Seiten in den alten elastischen Bohnen-Instanzen gehostet)?

Antwort

2

Kein Problem mit CORS.

Sie müssen den HTTP-Header Host: der eingehenden Anfrage innerhalb des Proxys ändern, bevor Sie die ausgehende Anfrage senden, damit S3 erkennt, dass der betreffende Bucket my-crazy-bucket.s3-website-us-east-1.amazonaws.com lautet.

Es reicht nicht aus, die Anfrage an S3 zu senden. Es muss an den richtigen Bucket adressiert werden, und S3 ermittelt anhand des eingehenden Headers Host:, ob ein Bucket-Endpunkt oder ein Bucket-Name vorliegt.

Ohne Ihren Proxy-Code zu sehen, kann ich nicht genauer sein.