我尝试开发一个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上。
答案 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被禁用,那么这就是你的问题。不同端口上的同一主机被视为不同的来源。