Ошибка CORS при отправке get reuqest из приложения angular 6 вasticsearch, даже если это разрешено - PullRequest
0 голосов
/ 02 октября 2018

У меня есть приложение angular 6, которое отправляет запросы http в базу данныхasticsearch.

Приложение angular, сервер nodejs (обслуживающий приложение angular) иasticsearch размещены на одной машине, а браузер включендругая машина.Клиент указывает на IP-адрес nodejs, используя браузер.

Запросы отправляются с помощью httpClient из angular (без использования какого-либо программного обеспечения nodejs или expressjs) и без разрешения запроса CORS со сторонним пакетом (Chrome и Firefox).) или изменив настройки браузера (IE 11), браузер не разрешает выполнение запроса и выдает мне ошибки CORS.

Я хочу, чтобы все работало без каких-либо настроек, поэтому я добавил следующую конфигурациюtoasticsearch.yml:

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With,X-Auth-Token,Content-Type, Content-Length"

И на всякий случай я добавил следующие строки на свой сервер nodejs:

app.use('*', function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

Запрос отправляется через службу в приложении angular, и егопросто:

  getIndecies(){
    return this.http.get(`${this.full_elastic_url}/_cat/indices?format=json`)
  }

Когда я не включаю CORS с chrome / firefox / IE11, я получаю это сообщение при отправке запроса:

Firefox: enter image description here

Chrome: enter image description here

IE: enter image description here

Я не понимаю, что я делаюнеправильно.Я включаю CORS в каждом месте, где онлайн-ответы рекомендуются для решения этой проблемы, но все же - браузер блокирует мой запрос.

Почему я не могу обойти эту ошибку?

КакМогут ли приложения, такие как кибана, сделать это без каких-либо проблем, но мое угловое приложение не может?

У кого-нибудь здесь есть волшебное решение для меня?

Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

В некоторых сетях браузеры по умолчанию также блокируют cors, по моему опыту лучший способ обойти это - прокси-запрос через ваш сервер узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...