Я запускаю ElasticSearch 6.6.1 на kubernetes вместе с несколькими контейнерами NodeJS. У меня нет проблем с загрузкой вasticsearch через NodeJS, но я не могу сделать запрос.
Мой elasticsearch.yml
:
node.data: ${NODE_DATA:true}
node.master: ${NODE_MASTER:true}
node.ingest: ${NODE_INGEST:true}
node.name: ${HOSTNAME}
network.host: 0.0.0.0
# see https://github.com/kubernetes/kubernetes/issues/3595
bootstrap.memory_lock: ${BOOTSTRAP_MEMORY_LOCK:false}
discovery:
zen:
ping.unicast.hosts: ${DISCOVERY_SERVICE:}
minimum_master_nodes: ${MINIMUM_MASTER_NODES:2}
# see https://github.com/elastic/elasticsearch-definitive-guide/pull/679
processors: ${PROCESSORS:}
# avoid split-brain w/ a minimum consensus of two masters plus a data node
gateway.expected_master_nodes: ${EXPECTED_MASTER_NODES:2}
gateway.expected_data_nodes: ${EXPECTED_DATA_NODES:1}
gateway.recover_after_time: ${RECOVER_AFTER_TIME:5m}
gateway.recover_after_master_nodes: ${RECOVER_AFTER_MASTER_NODES:2}
gateway.recover_after_data_nodes: ${RECOVER_AFTER_DATA_NODES:1}
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, Authorization, Access-Control-Allow-Headers, Accept
И, похоже, он правильно читает elasticsearch.yml
, потому что керлинг адреса дает
HTTP/1.1 200 OK
access-control-allow-origin: *
content-type: application/json; charset=UTF-8
content-length: 518
{
"name" : "elasticsearch-client-65459787c-mkjws",
...
Вот мой ReactiveBase
компонент:
app="amalfi/default2"
url="http://elasticsearch-client:9200"
headers={{
'Content-Type': 'application/json',
}}
>
Служба эластичного поиска называется elasticsearch-client
.
При попытке получить доступ к нему через http (веб-сайт использует https), я получаю This request has been blocked; the content must be served over HTTPS.
Но при использовании HTTPS я получаю "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at mysite.com"
, но он должен разрешать соединения отовсюду из-за http.cors.allow-origin: "*"
, верно?
Странно то, что у меня проблемы с загрузкой в ElasticSearch, но запросить его немного сложно ...
Я попытался установить точный адрес как http.cors.allow-origin: https://my-address-here.com
, но он выдал ошибку ...
Я также попробовал https.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/
с теми же результатами.