cloudscaleKnowledge Base
CORS Header konfigurieren
Wenn Objects in Websites eingebunden werden sollen, können für den Bucket die allenfalls nötigen CORS Header konfiguriert werden.
Du kannst Objects öffentlich zugänglich machen, z.B. mittels:
s3cmd --acl-public setacl s3://my-bucket/my-font.woff2
Das Object ist danach – ohne Authentifizierung mit Access Key und Secret Key – direkt abrufbar unter https://my-bucket.objects.lpg.cloudscale.ch/my-font.woff2.
Beim Einbinden in eine Website – z.B. unter https://www.example.com – kann es aber sein, dass der Browser die Datei aufgrund der "Same-Origin-Policy" nicht lädt. In diesem Fall helfen CORS-Header ("Cross-Origin Resource Sharing"), die du auf deinem Bucket konfigurierst. Erstelle dazu eine Datei wie folgt und speichere sie lokal ab, z.B. unter cors.xml:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
Übertrage diese Konfiguration dann z.B. mittels s3cmd auf deinen Bucket:
s3cmd setcors cors.xml s3://my-bucket
Bei einem Besuch auf https://www.example.com wird der Browser "testweise" auf https://my-bucket.objects.lpg.cloudscale.ch/my-font.woff2 zugreifen und dabei den HTTP-Header
Origin: https://www.example.com
mitschicken. Stimmt die mitgeschickte URL mit der auf dem Bucket konfigurierten überein, dann fügt der Object Storage in seiner Antwort die Header
access-control-allow-origin: https://www.example.com
access-control-allow-methods: GET
hinzu und signalisiert dem Browser damit, dass das Laden der Datei im Kontext dieser Website erlaubt ist.