跨域请求阻止的Elasticsearch

Nih*_*tap 1 elasticsearch angularjs

您好,我正在运行Elasticsearch 2.3版,我有一个Angular代码可以像search.query一样查询。当我运行它时,即使将http.cors.enabled设置为true以及将http.cors.allow-origin设置为,我也会收到此错误 /https?:\/\/localhost(:[0-9]+)?/

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://localhost:9200/elastic/_search?size=50. This can be fixed by moving the resource to the same domain or enabling CORS
Run Code Online (Sandbox Code Playgroud)

我不明白问题是什么。

我的请求标头。

    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0
Pragma: no-cache
Origin: http://127.0.0.1:8100
Host:   localhost:9200
Connection: keep-alive
Cache-Control:  no-cache
Access-Control-Request-Method:  POST
Access-Control-Request-Headers: content-type
Accept-Language:    en-US,en;q=0.5
Accept-Encoding:    gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Run Code Online (Sandbox Code Playgroud)

我的控制台看起来像这样。 在此处输入图片说明

但是,如果我将请求直接放在这样的浏览器中..我会得到正确的输出。

在此处输入图片说明

Jos*_*osa 6

通过将这些行添加到yml中,然后重新启动ES,已经解决了该问题。

 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
 http.cors.allow-credentials: true
Run Code Online (Sandbox Code Playgroud)

  • 测试:curl --head http://localhost:9200 -H 'Origin: http://example.com' (3认同)