elasticsearch.js Client-Verbindung abgelehnt: Access-Control-Allow-Origin nicht erkannt?
Ich habe versucht, eine lokal ausgeführte Elasticsearch mit elasticsearch.jquery.min.js zu pingen, und es wird jedes Mal die Fehlermeldung "Keine lebende Verbindung" angezeigt.
ETA: In Chrome sehe ich, wie eine ziemlich niedrige Ebene "Verbindung abgelehnt" aussieht. Ich entwickle unter MacOS X und mein Browser zeigt auf die Seite überhttp://localhost/~myuserid/SiteName/
. Während ich auf @ zugreilocalhost:9200
Dies fällt eindeutig unter die domänenübergreifenden CORS-Anforderungen.
In der Chrome-Konsole wird der folgende Fehler angezeigt:
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.
Perhttp: //enable-cors.org/server_apache.htm Ich habe Folgendes zu /etc/apache2/httpd.conf:@ hinzugefü
<Directory />
Header set Access-Control-Allow-Origin "localhost:9200"
AllowOverride none
Require all denied
</Directory>
und Ren
$ sudo apachectl -t
$ sudo apachectl -k graceful
aber der Fehler bleibt bestehen. Gibt es eine andere Einstellung, die ich übersehen habe?
Ich bin ein Neuling bei elasticsearch.js. Muss ich irgendetwas auf der Elasticsearch-Seite tun, um Client-Verbindungen über den Browser zuzulassen, oder so?
Ich folgedas Buc in meinem Ping-Versuch:
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');
}
}
);
aber ich erhalte folgende Fehlermeldung (en):
"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
Ich kann eine Verbindung herstellen, indem ich in der Befehlszeile locke, Daten abziehe und einfüge usw.
$ 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
ETA zusätzliche Diagnose. Google Chrome zeigt die folgenden Netzwerkspuren für den fehlgeschlagenen Versuch an. Auf der HTTP-Ebene sieht die Antwort so aus, als würde sie stattfinden.
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!
Die gleiche Anfrage in 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]
Ich bin wirklich ratlos, wohin ich von hier aus gehen soll. Ich sehe viele Hinweise auf den Fehler auf der googlz, aber keiner der Umstände scheint entfernt ähnlich. Es fühlt sich an, als würde ich nur eine falsche Konfiguration treffen, aber ich kann nichts finden, was darauf hindeutet, was das ist.