SrcaftSrcaft MemberComments: 0 Received thanks: 0 Member since: January 23 edited January 29

Hallo zusammen,

aktuell versuchen wir ein auf javascript basierendes System mit unserer Shopware 5 REST Api zu verbinden. Leider klappt das nicht so recht. Bei API Aufrufen kam es erst zu dieser Fehlermeldung:

Access to XMLHttpRequest at 'https://unser-shop.com/api/articles/2387' from origin 'https://client.test.de' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header has a value 'https://sub.test.de' that is not equal to the supplied origin.

Daraufhin habe ich in der .htaccess Datei des Shops folgendes hinzugefügt:

Header set Access-Control-Allow-Origin: https://client.test.de

(bzw auch mit "Header set Access-Control-Allow-Origin "*" getestet)
In beiden Fällen war der erste Fehler weg, aber es kommt stattdessen zu folgender Fehlermeldung:

Access to XMLHttpRequest at 'https://unser-shop.com/api/articles/2387' from origin 'https://client.test.de' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Bei API Aufrufen direkt auf unserem Server über PHP gab es hingegen keine Probleme. Jemand eine Idee wie sich das Problem lösen lässt?

EDIT:

Ich konnte das Problem lösen:

An den Anfang der Shopware .htaccess Datei, nach "RewriteEngine on" folgendes hinzufügen:

<IfModule mod_headers.c>
Header append X-Frame-Options SAMEORIGIN
# allow cross-site requests
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "*, Authorization, authorization"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
# always return 200 for preflight OPTIONS requests
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

Um den Cross Site Zugriff auf eine bestimmte Domain einzugrenzen muss dann noch folgende Zeile angepasst werden:

Header always set Access-Control-Allow-Origin "*"

 Und zwar zu:

Header always set Access-Control-Allow-Origin "https://deine-cross-site-domain.org"

Quelle:

https://www.rent-a-hero.de/2017/10/09/die-shopware-rest-api-von-javascript-aus-nutzen/

Sign In or Register to comment.