使用angularjs将elasticsearch作为跨域请求

时间:2016-06-29 14:15:34

标签: angularjs elasticsearch cross-domain

我正在使用angularjs创建一个Web应用程序。我正在对elasticsearch api提出请求。这是代码:

app.controller('usersDatas', function($scope, $http){
  $http.post("http://192.168.6.55:9200/userdata/_search", {headers : { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
    data: "{ 'query': { 'query_string': { 'query': 'png' } } }"
    // Access-Control-Allow-Origin: true
  }).success(function(data){
    console.log(data);
  });
});

这是我的错误:

XMLHttpRequest cannot load http://192.168.6.55:9200/userdata/_search. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.

我添加了这个:

http.cors:
  enable: true
  allow-origin: /https?:/\/\/localhost(:[0-9]+)?/

到我的elasticsearch(/etc/elasticsearch/elasticesarch.yml)配置。我不知道问题是来自弹性搜索还是来自angularjs。 我怎么解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:1)

您必须添加HEADER Access-Control-Allow-Origin

PHP示例:

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

答案 1 :(得分:0)

这是浏览器问题首先关闭所有Chrome浏览器窗口......

  • 打开终端

  • sudo -i

  • (您的密码)

然后输入

  • google-chrome --disable-web - security

然后尝试该网址中的链接