【问题标题】:Using ElasticSearch from the browser fails on OPTIONS request在 OPTIONS 请求上使用浏览器中的 ElasticSearch 失败
【发布时间】:2016-08-02 16:13:19
【问题描述】:

我正在使用 jQuery 的 ajax 方法向我的 Elastic 的 _search API 发出 POST 请求。

在查询中传递参数时,一切正常:

$.ajax({
  url: '//localhost:9200/my_index/_search/?q=hello',
  method: 'POST'
}).then(function(body){
  console.log(body);
});

在body(json)中传递参数时,问题开始了:

$.ajax({
  url: '//localhost:9200/my_index/_search/',
  method: 'POST',
  dataType: 'json',
  contentType: "application/json",
  data: this.params
}).then(function(body){
  console.log(body);
});

浏览器 (Chrome) 不发送 POST 请求,而是发送 OPTIONS 请求。

阅读我看到的 jQuery 的文档:

对于跨域请求,将内容类型设置为 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 以外的任何内容都会触发浏览器向服务器发送预检 OPTIONS 请求.

所以这可能就是它的来源。

问题是,在该预检请求之后没有任何反应。

在 Wireshark 中查看请求本身:

OPTIONS /my_index/_search/ HTTP/1.1
Host: localhost:9200
Connection: keep-alive
Cache-Control: max-age=0
Access-Control-Request-Method: POST
Origin: http://localhost:4000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
Referer: http://localhost:4000/search/?q=hello
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,fr;q=0.6

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: 
Access-Control-Max-Age: 1728000
date: Tue, 12 Apr 2016 07:30:50 GMT
content-length: 0

我注意到响应的Access-Control-Allow-Methods 字段为空,所以我认为它可能是相关的。

我的 elasticsearch.yml 文件包含:

http.cors.enabled: true
http.cors.allow-origin: "*"

我补充说:

http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE

但它并没有改变任何东西。

【问题讨论】:

  • 你有什么版本的ES?看到这个:github.com/elastic/elasticsearch/issues/17483
  • version[2.3.1] 修复了哪个版本?
  • 将在2.3.2修复
  • 啊哈 - 这可以解释。你知道这个版本的预计到达时间吗?
  • (随意写这个作为我会接受的答案)

标签: jquery elasticsearch cors


【解决方案1】:

这是由this issue引起的,已修复,将在2.3.2发布

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 2020-05-20
  • 1970-01-01
  • 2020-05-07
  • 2017-03-18
  • 2017-01-16
  • 2012-06-27
相关资源
最近更新 更多