Drupal 8 verfügt über einen integrierten RESTful-Webdienst, und seit 8.2 benötigen wir kein Cors-Modul .
Jetzt Dienste nutzen wir nur aktivieren und konfigurieren default.service.yml Datei als in bestimmten hier
Ich konnte dieses Setup jedoch nicht so konfigurieren, dass der Webdienstzugriff über eine andere Domäne möglich ist.
Mein aktuelles service.yml-Setup für cors lautet:
cors.config:
enabled: true
# Specify allowed headers, like 'x-allowed-header'.
allowedHeaders: ['x-csrf-token,authorization,content-type,accept,origin,x-requested-with']
# Specify allowed request methods, specify ['*'] to allow all possible ones.
allowedMethods: ['POST, GET, OPTIONS, DELETE, PUT']
# Configure requests allowed from specific origins.
allowedOrigins: ['*']
# Sets the Access-Control-Expose-Headers header.
exposedHeaders: false
# Sets the Access-Control-Max-Age header.
maxAge: 1000
# Sets the Access-Control-Allow-Credentials header.
supportsCredentials: false
Ich habe gegoogelt, um weitere detaillierte Konfigurationen zu finden, konnte aber keine finden.
Ich erstelle dies für die Testentwicklung in zwei verschiedenen Bereichen.
Verwenden der pantheon dev-Umgebung für Webdienste und der benutzerdefinierten .dev-Domäne von localhost zum Konsumieren dieser Dienste.
Der Servicezugriff funktioniert einwandfrei mit der Chrome CORS-Erweiterung.
quelle
Antworten:
Ich bin vor kurzem auf Pantheon darauf gestoßen, und hoffentlich hilft das, wenn Sie es noch nicht gelöst haben.
Ein paar Dinge zu beachten ...
Stellen Sie in Bezug auf den Speicherort der Datei im Pantheon sicher, dass sich Ihre Datei service.yml in / sites / default vs just / sites befindet. Ich hatte fälschlicherweise den Eindruck, dass es von beiden Orten aus funktionieren würde. Es funktioniert nur im Verzeichnis / sites / default.
Beachten Sie die durch Kommas getrennte Liste der erlaubten Header, die jeweils in eigenen Anführungszeichen stehen. Ich hatte ursprünglich eine einzelne Zeichenfolge, wie Sie es in Ihrem obigen Beispiel getan haben, und sie schlug unzählige Male fehl, bevor ich den subtilen Unterschied bemerkte. Ich bin mir ziemlich sicher, dass allowMethods genauso funktioniert, wenn Sie Ihre Methoden speziell auflisten möchten.
Bitte beachten Sie auch, dass mein Code-Snippet zwar gut für die Entwicklung gegen eine Pantheon-Sandbox geeignet ist, Sie aber wahrscheinlich vor Produktionsbeginn die Dinge etwas mehr sperren möchten. Wenn Pantheon HTTPS anbietet, sollten Sie es auch verwenden, wenn Sie Informationen über Header weitergeben möchten. Ich hoffe, dies hilft entweder Ihnen, wenn Sie immer noch Probleme haben, oder jemand anderem, der später darauf gestoßen ist.
quelle
Suchen Sie nach: ... / sites / default / default.services.yml
Erstellen Sie eine Kopie und benennen Sie die Kopie um in:
... / sites / default / services.yml
Suchen Sie diesen Teil des Codes: cors.config: enabled: false
und durch Folgendes ersetzen: - cors.config: enabled: true
Leeren Sie den Cache.
quelle
Die folgende Einstellung funktioniert für mich.
quelle
exponiertHeaders: true ist ungültig und verursacht Warnung: implode (): Ungültige Argumente, die in Asm89 \ Stack \ CorsService-> addActualRequestHeaders () übergeben wurden (Zeile 94 von / vendor / asm89 / stack-cors / src / Asm89 / Stack / CorsService. php) # 0 /web/core/includes/bootstrap.inc(584) Es muss entweder false oder ein Array mit zulässigen Headern sein, um verfügbar zu machen, siehe https://developer.mozilla.org/en-US/docs/Web/ HTTP / Header / Access-Control-Expose-Header
quelle