2016-07-27 14 views
0

Die gesamte Anwendung wird mit Angular 2 für Dart erstellt.CORS-Fehler bei Verwendung von HttpRequest.getString (url)

An einem Ort habe ich einen Service mit einem wirklich naiven HttpRequest.getString() Anruf ohne spezielle Parameter oder irgendetwas.

String response = await HttpRequest.getString(url); 

Auf der Serverseite gibt es eine Wordpress Installation mit WP-API läuft.

Es scheint, ist, dass Dart für die aktuell geladenen Hostnamen irgendwie einen neue Antwort-Header zu schaffen, weil ich diese Fehlermeldung erhalten:

XMLHttpRequest cannot load http://my-wordpress/wp-json/wp/v2/pages .

The 'Access-Control-Allow-Origin' header contains multiple values ' http://localhost:8080 , *', but only one is allowed. Origin ' http://localhost:8080 ' is therefore not allowed access.


ich nicht das gleiche Ergebnis obwohl Postman,:

enter image description here


Von dem, was ich aus dem Quellcode lesen konnte, Dart itself concatenates duplicate headers into just one, aber ich konnte keine Informationen zu diesem zusätzlichen CORS-Header finden.

Antwort

0

Ich könnte es beheben, indem Sie Wordpress spezifischen REST-API Code auskommentieren. Im Ordner wp-includes befindet sich eine Datei mit der Bezeichnung rest-api.php.

Auf Linie 376 nach oben sehen Sie etwas wie folgt aus:

header('Access-Control-Allow-Origin: ' . esc_url_raw($origin)); 
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE'); 
header('Access-Control-Allow-Credentials: true'); 

Dies scheint den Host des Antrags zu ermöglichen, die API zuzugreifen. Aber da ich bereits * als Origin hinzufüge, wird dies fehlschlagen. Also habe ich diesen Code einfach kommentiert und alles funktioniert gut.