我的AngularJS应用程序无法连接到localhost:9200上运行的本地elasticsearch

时间:2016-10-30 10:48:41

标签: angularjs elasticsearch

我尝试开发一个AngularJS JavaScript应用程序,直接连接到安装在同一台机器上的elasticsearch后端。对于本地开发,我安装了最新的elasticseach 5.0并用测试数据填充它。

$http.get('http://localhost:9200/_search')的简单请求失败,出现以下错误:

{"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"headers":{"Accept":"*/*,"Accept-Encoding":"gzip, deflate"},"url":"http://localhost:9200/_search"},"statusText":""}

备注:我通过Firefox调用我的AngularJS应用程序,我在配置中禁用了CORS。我使用的开发环境中的相同行为:在我的MacBook Pro和我的WIN10 SurfacePro上。

2 个答案:

答案 0 :(得分:0)

我在绝望2小时后找到了解决方案; - /

只需在Elasticsearch级别停用CORS,但当然不应该在生产环境中执行此操作。

在./config/elasticsearch.yml

中添加这两行
http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/

在此处查找供应商文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html

答案 1 :(得分:0)

如果CORS被禁用,那么这就是你的问题。不同端口上的同一主机被视为不同的来源。