У меня есть приложение 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:
Chrome:
IE:
Я не понимаю, что я делаюнеправильно.Я включаю CORS в каждом месте, где онлайн-ответы рекомендуются для решения этой проблемы, но все же - браузер блокирует мой запрос.
Почему я не могу обойти эту ошибку?
КакМогут ли приложения, такие как кибана, сделать это без каких-либо проблем, но мое угловое приложение не может?
У кого-нибудь здесь есть волшебное решение для меня?
Спасибо!