Contao 4 - Access-Control-Allow-Origin


Contao 4 - Warum erhalte ich diese Fehlermeldung? Access-Control-Allow-Origin

Contao 4 - Access-Control-Allow-Origin

Warum erhalte ich diese Fehlermeldung?

Wenn Seite A versucht, Inhalt von Seite B abzurufen, kann Site B einen Antwort-Header für die Zugriffssteuerung mit Informationen zur Herkunft senden, um dem Browser mitzuteilen, dass der Inhalt dieser Seite bestimmten Quellen zugänglich ist. (Beispiel: Anfrage von https://localhost:3000 -> Schema, Domain und Portnummer.) Standardmäßig sind die Seiten von Seite B für keinen anderen Ursprung zugänglich. Durch die Verwendung des Headers "Access-Control-Allow-Origin" wird der Zugriff auf eine bestimmte Anfragende Domain geöffnet.

Für jede Ressource / Seite, die Seite B für Seite A zugänglich machen soll, muss in Seite B ein entsprechender Antwortheader definiert werden:

Access-Control-Allow-Origin: http://localhost:3000

Dies kann zum Beispiel im Fall von Contao per .htaccess oder PHP erfolgen.

Fehlermeldung

Access to XMLHttpRequest at 'http://example.org/api/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Lösung #1 / BestPractice

# .env im Root Verzeichnis
CORS_ALLOW_ORIGIN='localhost:[0-9]|example.org'

# app/config/config.yml
nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/api/':
            allow_origin: ['*']
            allow_headers: ['X-Custom-Auth']
            allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
            max_age: 3600
        '^/':
            origin_regex: true
            allow_origin: ['^http://localhost:[0-9]+']
            allow_headers: ['X-Custom-Auth']
            allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
            max_age: 3600
            hosts: ['^rest\.']

Lösung #2

# in der .htaccess
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "localhost:3000"
</IfModule>

Mehr Infos

Mehr Informationen zum NelmioCorsBundle findest du unter https://github.com/nelmio/NelmioCorsBundle

Zurück

Ähnliche Beiträge

Zurzeit sind keine Nachrichten vorhanden.

*******************

Liebe Leser,
Menschen sind nicht ausschließlich Frauen, Männer, weiblich, männlich, divers – Menschen können vielfältiger sein! Wir möchten euch ALLE als Menschen ansprechen, egal von welchem Geschlecht oder welcher Kultur. Sprachlich ist es schwierig, euch alle „richtig“ anzusprechen. Daher verwenden wir – auch für eine bessere Lesbarkeit – bei Personenbezeichnungen meist die männliche Form, wie Dienstleister oder Partner. Aber eins ist uns wichtig: Keiner soll sich ausgeschlossen fühlen.

Zudem sind wir Verfechter des DU #gernperdu und gestalten so unsere tägliche Kommunikation etwas lockerer und persönlicher. Auch hier gilt: Wir bringen allen die gleiche Wertschätzung entgegen.

*******************