2016-10-05 1 views
1

Я звоню в SonarQube API, используя модуль JSONP.Может ли модуль JSONP с угловым 2 заставлять читать MIME-тип ('application/json')?

this.jsonp.get('https://sonarqube.com/api/projects/index') 
       .subscribe(res => console.log(res)); 

я ранее использовал Http модуль Angualar2, который вызвал браузер бросить ошибку

Origin http://localhost:4200 is not allowed by Access-Control-Allow-Origin 

Чтобы преодолеть эту проблему, я узнал, что вы могли бы использовать JSONP или CORS или запустить хром с --disable-web-security из что я мог бы найти достаточную поддержку машинописного текста, чтобы начать работу с JSONP. Но позже я обнаружил, что JSONP ожидает MIME-типа будет приложение/JavaScript, когда я получил следующее сообщение об ошибке

Refused to execute script from 'https://sonarqube.com/api/projects/index' 
because its MIME type ('application/json') is not executable, 
and strict MIME type checking is enabled. 

Есть ли способ, чтобы заставить модуль JSONP для извлечения данных в формате JSON и разобрать его успешно?

ответ

2

Решение 1: Включить JSONP в сервере

я узнал, что это не представляется возможным. JSONP - это всего лишь один из способов преодолеть Cross-Origin-Requests problem, но для изменения данных JSONP требуется модификация конфигурации/реализации сервера (MIME-type: application/javascript).

Решение 2: Включить поддержку CORS в сервере

CORS является более недавним решением проблемы Cross-Origin-запросов. Она может быть решена путем добавления следующих заголовков на сервер:

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST,GET,PUT,DELETE 
Access-Control-Allow-Headers: Authorization, Lang 

Решение 3: Использование обратного прокси

Одно предложение, которое я наткнулся в моем поиске должен был использовать сервер для извлечения Cross-Origin-Request. Я не контролировал код сервера. Затем я наткнулся на концепцию Reverse Proxies, нашел пакет cors-anywhere на угловом форуме. Обратный прокси получает эти ресурсы от имени вашего интерфейса и добавляет заголовки CORS к прокси-запросу.