ElasticSearch Access-Control-Allow-Headers标头不存在

时间:2016-04-29 14:36:20

标签: javascript ajax rest elasticsearch cors

我正在从本地https服务器向ElasticSearch端点发出POST请求,该端点已配置如下

<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5.1/dat.gui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r76/three.min.js"></script>
<style type="text/css">body { margin: 0 } canvas { display: block }</style>

请求包含标题:

http.cors.enabled: true
http.cors.allow-credentials: 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, Access-Control-Allow-Headers, Accept

在POST请求中,出现以下错误:Access-Control-Allow-Headers: Accept, Access-Control-Allow-Headers, Authorization, Content-Type Content-Type: application/json; charset=utf-8 Accept: application/json; charset=utf-8 Access-Control-Allow-Credentials: true Authorization: (basic authentication token)

网络调试器确实显示响应头中不存在Request header field Access-Control-Allow-Headers is not allowed by Access-Control-Allow-Headers in preflight response.标头。响应标题:

Access-Control-Allow-Headers

请注意,HTTP/1.1 200 OK Access-Control-Allow-Origin: https://dl.dropboxusercontent.com Vary: Origin Access-Control-Allow-Methods: Access-Control-Allow-Credentials: true Access-Control-Max-Age: 1728000 content-length: 0 date: Fri, 29 Apr 2016 14:08:14 GMT 不存在且Access-Control-Allow-Headers为空。已经测试了所有可能的字符串格式,并且不显示这些标题。

2 个答案:

答案 0 :(得分:0)

您应在elasticsearch.yml上添加以下符号:

http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : Authorization, X-Requested-With,X-Auth-Token,Content-Type, Content-Length

然后重新启动es,请尽情享受!

答案 1 :(得分:0)

我终于用 elasticsearch.yml 中的这些配置行解决了这个问题:

http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/(localhost)?(127.0.0.1)?(:[0-9]+)?/
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : Authorization, X-Requested-With,X-Auth-Token,Content-Type, Content-Length