2017-02-13 9 views
1

Ich habe Probleme bei der Verwendung von JW Platform-Dienste in einer Web-Anwendung mit Angular2 entwickelt.JW Player (api.jwplatform.com) - CORS Ausgaben

Sollte ich davon ausgehen, dass JWplayer die CORS-Anfrage auf dem Endpunkt 'api.jwplatform.com' nicht richtig verwaltet?

Hier ist der Fall. Ich schicke die folgende Anfrage

Request URL:https://api.jwplatform.com/v1/channels/list/?api_format=xml&api_key=BNgTpOY5&api_nonce=33502681&api_timestamp=1487003685&types_filter=manual&api_signature=287df9d7dcefaf9bcae656c518a4cc29718bcaeb 
Request Method:GET 
Status Code:200 OK 
Remote Address:10.68.96.40:8080 

das sind die Request-Header:

Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2,de;q=0.2,es;q=0.2 
Connection:keep-alive 
Host:api.jwplatform.com 
Origin:https://mydomain 
Referer:https://mydomain/channels 
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 

waren Mydomain natürlich ist die Domain, von der ich die Anfrage sende.

Unterhalb der Antwort-Header ich aus dem End-Punkt:

Cache-Control:no-cache 
Connection:keep-alive 
Content-Length:3847 
Content-Type:application/xml; charset=utf-8 
Date:Mon, 13 Feb 2017 16:34:46 GMT 
Pragma:no-cache 
Server:openresty 
X-RateLimit-Limit:60 
X-RateLimit-Remaining:58 
X-RateLimit-Reset:1487003700 

Wie oben zu sehen ist, gibt es keine 'Access-Control-Allow-Origin: *' Header in der Antwort und Daher darf die App nicht auf die abgerufenen Daten zugreifen.

Beachten Sie, dass ich in der Browser-Konsole sowohl Statuscode sehen: 200 O K oder die JSON-Daten vom Server. Alles funktioniert hinter einem Proxy, aber das kann nur in einem dev env funktionieren.

Vielen Dank für Ihre Hilfe.

+0

CORS ist eine Server-Einstellung:

Sie können Ihre eigene Instanz von CORS Überall in Node.js mit dem cors-anywhere package eingerichtet. Angular ist dafür nicht verantwortlich. Siehe https://enable-cors.org/server.html – AngularChef

+0

Mögliches Duplikat von [Angular HTTP GET CORS Fehler] (http://stackoverflow.com/questions/42048116/angular-http-get-cors-error) – mplungjan

Antwort

0

Sollte ich davon ausgehen, dass JWplayer die CORS-Anfrage auf dem Endpunkt 'api.jwplatform.com' nicht korrekt verwaltet?

Ja.

Also, wenn Sie diese Arbeit bekommen wollen, die einzige praktische Lösung ist, ein Reverse-Proxy entweder einrichten oder auf eine offene Reverse-Proxy zu verwenden, wie https://cors-anywhere.herokuapp.com/

Statt Ihre Anfrage https://api.jwplatform.com/v1/channels/list/?… direkt versenden, https://cors-anywhere.herokuapp.com/https://api.jwplatform.com/v1/channels/list/?… ist wo Sie es senden, und das dann Ihre Anfrage weiterleitet und auf den Browser mit dem Header Access-Control-Allow-Origin und anderen erwarteten CORS-Headern antwortet.

npm install --save cors-anywhere