我尝试开发一个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":""}
备注:我通过火狐调用我的AngularJS应用程序,我在配置中禁用了CORS。在我使用的两个开发环境上:在我的MacBook专业版和我的WIN10 SurfacePro上,行为是相同的。
发布于 2016-10-30 18:54:14
经过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
发布于 2016-10-30 18:55:05
如果CORS被禁用,那么这就是你的问题。不同端口上的同一主机被视为不同的来源。
https://stackoverflow.com/questions/40328275
复制相似问题