2017-02-13 18 views
1

У меня возникают проблемы с использованием услуг JW Platform в веб-приложении, разработанном с помощью Angular2.JW Player (api.jwplatform.com) - Проблемы с CORS

Должен ли я предполагать, что JWplayer неправильно управляет запросом CORS на конечной точке api.jwplatform.com?

В данном случае. Я посылаю следующий запрос

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 

эти заголовки запроса:

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 

были MYDOMAIN, конечно, домен, из которого я посылаю запрос. не

Ниже заголовки ответа я получаю от конечной точки:

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 

Как можно видеть выше, нет 'Access-Control-Allow-Origin: *' заголовка в ответе и поэтому приложению не разрешается доступ к извлеченным данным.

Обратите внимание, что в консоли браузера можно увидеть и Status Code: 200 O K или JSON данные в с сервера. Все работает за прокси, но это может работать только в dev env.

Спасибо, что помогли мне.

+0

CORS является установка SERVER. Angular не несет за это ответственности. См. Https://enable-cors.org/server.html – AngularChef

+0

Возможный дубликат [Угловая ошибка HTTP GET CORS] (http://stackoverflow.com/questions/42048116/angular-http-get-cors-error) – mplungjan

ответ

0

Должен ли я предполагать, что JWplayer неправильно управляет запросом CORS на конечной точке api.jwplatform.com?

Да.

Так что если вы хотите получить эту работу, единственным практическим решением является либо настроить обратный прокси-сервер или использовать открытый обратный прокси-сервер, такой как https://cors-anywhere.herokuapp.com/

Вместо отправки запроса на https://api.jwplatform.com/v1/channels/list/?… непосредственно, https://cors-anywhere.herokuapp.com/https://api.jwplatform.com/v1/channels/list/?… является где вы его отправляете, и затем проксирует ваш запрос и отвечает на браузер заголовком Access-Control-Allow-Origin и другими ожидаемыми заголовками CORS.

Вы можете создать свой собственный экземпляр CORS Anywhere в Node.js с cors-anywhere package:

npm install --save cors-anywhere