Как исправить ошибку перекрестного источника при запросе к Kylo API
У меня есть запущенный экземпляр Kylo Sandbox на сервере, который называется: kyloserver
, Я пытаюсь получить доступ к Kylo API с моего сайта, работающего в localhost:8080
,
Я пытаюсь использовать Search API, вызывающий URL:
http://kyloserver:8400/proxy/v1/feedmgr/search?q=mary&rows=20&start=0
и используя базовую аутентификацию в заголовке, как это (javascript):
Authorization: 'Basic ' + btoa(this.username + ":" + this.password)
Ответ:
Не удалось загрузить http://kyloserver:8400/proxy/v1/feedmgr/search?q=mary&rows=20&start=0: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: нет заголовка "Access-Control-Allow-Origin" присутствует на запрашиваемом ресурсе. Источник ' http://localhost:8080/ ', следовательно, не имеет доступа. Ответ имел HTTP-код состояния 403.
Если я использую Swagger, войдя в пользовательский интерфейс, я могу получить результаты правильно.
Как я могу получить доступ к API успешно?
(Kylo версия: 0.8.3)
Благодарю.
2 ответа
Kylo по умолчанию отключил поддержку CORS. Вам нужно будет написать плагин для переопределения конфигурации по умолчанию на тот, который включает CORS: https://github.com/Teradata/kylo/blob/v0.8.4/services/service-app/src/main/java/com/thinkbiganalytics/server/DefaultWebSecurityConfigurer.java
Наконец, я решил создать прокси-веб-сервис, который размещается на том же сервере, что и Kylo, который просто перенаправляет запросы из Интернета в Kylo Service.