Невозможно получить доступ к NIFI Rest api другого сервера в защищенном режиме

Я пытаюсь получить доступ к NIFI rest api другого сервера со своей машины, используя ajax, как показано ниже,

url:"https://serverip:port/nifi-api/",
{Authorization : 'Bearer ' + 'access token here'}

Получение ответа на предполетный запрос не проходит проверку контроля доступа: в запрошенной ошибке ресурса отсутствует заголовок «Access-Control-Allow-Origin».


person kayal    schedule 03.04.2017    source источник


Ответы (1)


API Apache NiFi разработан для вызова различными клиентами, но в этом случае я думаю, что вы столкнулись с мерами безопасности, введенными CORS (совместное использование ресурсов между источниками).

Если фрагмент кода на сервере A (ваша машина, отличная от NiFi) делает запрос AJAX к другому источнику (вашему экземпляру NiFi), а метод HTTP не является GET (и некоторые другие незначительные ограничения), сервер A сначала отправит «предполетный» запрос, то есть HTTP OPTIONS, к удаленному экземпляру, чтобы определить, какие запросы действительны. Сервер может ответить на это заголовком Access-Control-Allow-Origin: *, который представляет собой подстановочный знак, означающий, что он принимает запросы из любого источника. Однако, если вы хотите отправить учетные данные вместе с запросом, исходное имя хоста должно быть явно указано в ответе (Access-Control-Allow-Origin: https://serverA.com).

Поскольку NiFi использует встроенный сервер Jetty для размещения API, вам, возможно, придется явно добавить _ 5_, как описано здесь.

person Andy    schedule 03.04.2017
comment
Привет, Энди, попытался добавить фильтр, как указано в stackoverflow.com/questions/16037558/, но по-прежнему появляется та же ошибка Ответ на предполетный запрос не проходит проверку контроля доступа: нет Заголовок Access-Control-Allow-Origin присутствует в запрошенном ресурсе. Исходный 'serverA: // port' поэтому не имеет доступа. - person kayal; 04.04.2017
comment
Если вы используете инструменты разработчика или curl для выполнения запроса AJAX, можете ли вы увидеть ответ и изучить его заголовки? Похоже, что фильтр не помещает правильный заголовок в ответ. (Также serverA://port кажется неправильным ...). - person Andy; 05.04.2017
comment
Привет, Энди, проблема решена путем добавления фильтров перед существующим разделом фильтров. Ссылка: marianoguerra.org/posts/enable-cors-in-apache- solr.html - person kayal; 07.04.2017
comment
Привет, Энди, фильтры перекрестного происхождения не работают в IE и Microsoft Edge. У тебя есть идеи? - person kayal; 10.04.2017