jquery - elasticsearch.js 客户端连接被拒绝 : Access-Control-Allow-Origin not recognized?

标签 jquery ajax apache localhost access-control

我一直在尝试使用elasticsearch.jquery.min.js ping 本地运行的elasticsearch,但每次都会收到“无事件连接”错误。

<小时/>

预计到达时间:在 Chrome 中,我看到了一个看起来相当低级别的“连接被拒绝”。我正在 MacOS X 上进行开发,我的浏览器通过 http://localhost/~myuserid/SiteName/ 指向该页面。当我访问 localhost:9200 时,这显然属于跨域 CORS 要求。

我在 Chrome 控制台中看到以下错误:

XMLHttpRequest cannot load http://localhost:9200/?hello=elasticsearch!.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access.

http://enable-cors.org/server_apache.html我已将以下内容添加到/etc/apache2/httpd.conf:

<Directory />
    Header set Access-Control-Allow-Origin "localhost:9200"
    AllowOverride none
    Require all denied
</Directory>

然后运行

$ sudo apachectl -t
$ sudo apachectl -k graceful

但错误仍然存​​在。还有其他我忽略的设置吗?

<小时/>

我是elasticsearch.js 的菜鸟。我需要在elasticsearch方面做些什么来允许来自浏览器的客户端连接或者其他什么吗?

我正在关注the book在我的 ping 尝试中:

var client = new $.es.Client({
  hosts: 'localhost:9200'
  });

client.ping(
  {
    requestTimeout: Infinity,
    // undocumented params are appended to the query string
    hello: "elasticsearch!"
    },
  function (error) {
    if (error) {
      console.error('elasticsearch cluster is down!');
      console.error(error);
    } else {
      console.log('All is well');
      }
    }
  );

但我收到以下错误:

"WARNING: 2015-10-10T07:00:16Z"        elasticsearch.jquery.min.js:14:10575
  Unable to revive connection: http://localhost:9200/

"WARNING: 2015-10-10T07:00:16Z"        elasticsearch.jquery.min.js:14:10575
  No living connections

我可以在命令行上使用curl进行连接,拉取和插入数据等:

$ curl "localhost:9200/_cat/indices?v"
health status index             pri rep docs.count docs.deleted store.size pri.store.size 

green  open   fuddle              1   0          3            0     12.9kb         12.9kb                                                
green  open   faddle              1   0          0            0       144b           144b 



预计到达时间附加诊断。 Google Chrome 显示失败尝试的以下网络跟踪。在 HTTP 层,响应看起来像是正在发生。

General
  Remote Address:[::1]:9200
  Request URL:http://localhost:9200/?hello=elasticsearch!
  Request Method:HEAD
  Status Code:200 OK
Response Headers
  Content-Length:0
  Content-Type:text/plain; charset=UTF-8
Request Headers
  Accept:text/plain, */*; q=0.01
  Accept-Encoding:gzip, deflate, sdch
  Accept-Language:en-US,en;q=0.8
  Connection:keep-alive
  Content-Length:0
  Host:localhost:9200
  Origin:http://localhost
  Referer:http://localhost/~browsc3/Opticon/
  User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Query String Parameters
  view URL encoded
  hello:elasticsearch!

wget 中的相同请求:

wget http://localhost:9200/?hello=elasticsearch!
--2015-10-10 09:47:13--  http://localhost:9200/?hello=elasticsearch!
Resolving localhost... ::1, 127.0.0.1
Connecting to localhost|::1|:9200... connected.
HTTP request sent, awaiting response... 200 OK
Length: 342 [application/json]
Saving to: 'index.html?hello=elasticsearch!'

index.html?hello=elastics 100%[=====================================>]     342  --.-KB/s   in 0s     

2015-10-10 09:47:13 (65.2 MB/s) - 'index.html?hello=elasticsearch!' saved [342/342]

我真的不知道从这里该去哪里。我在 googlz 上看到很多对该错误的引用,但没有一个情况看起来完全相似。感觉就像我遇到了一些配置错误,但我找不到任何可以表明那是什么的东西。

最佳答案

好吧,那是一个艰难的过程。

解决方法如下:

http://enable-cors.org/server_apache.html ,在/etc/apache2/httpd.conf中,配置Access-Control-Allow-Origin:

<Directory />
    # Add the following line to enable CORS to connect to local elasticsearch.
    Header set Access-Control-Allow-Origin "localhost:9200"
    AllowOverride none
    Require all denied
</Directory>

https://jsbroadcast.com/elastic-search-cors/ ,在elasticsearch-1.7.0/config/elasticsearch.yml中添加:

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"

我现在可以运行 client.ping 调用,不会出现任何错误。

关于jquery - elasticsearch.js 客户端连接被拒绝 : Access-Control-Allow-Origin not recognized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33051405/

相关文章:

javascript - 根据选中的单选按钮访问表格行的元素

javascript - JS/Jquery 在空中调度时间线上,就像 BBC 在空中调度一样

javascript - 禁用 dropzone 页面刷新

javascript - 系统参数计数异常 : Parameter count mismatch

php - 限制 PHP 的文件系统访问文件夹

javascript - 强制 JSONP 调用将文本响应转换为 JSON

javascript - .ajax JSON 类型错误 : Cannot read property 'length' of undefined

javascript - 无法使用 AJAX 下载 TCPDF 生成的 PDF

Python 代码无法在浏览器上运行

php - .htaccess – 重写对index.php的所有请求,除了某些目录中的文件