Ho trovato utile this. Dovresti aggiungere un paio di jetty jars e di webdefault.xml per abilitare CORS.
sto che riproduce il testo qui:
Nel progetto di esempio solr quando si esegue il programma chiamando la seguente riga:
java-jar Iniziamo
si avvia un Server Jetty sul tuo computer locale che servirà i risultati del solr. Questo server non è in grado di eseguire CORS (Cross Origin Resource Sharing). Il che significa che se provassi a fare una chiamata AJAX da una pagina web di origine diversa da quella del server stesso, ti verrebbe negata una risposta.
Per risolvere questo problema è necessario prima ottenere i vasi appropriati per consentire la condivisione delle risorse tra domini.
ho usato il seguente vaso: http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/8.1.10.v20130312/
ma potrebbe essere necessario per ottenere la versione più adatta per la versione di pontile: http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/
Si può scoprire quale versione di Jetty si sta eseguendo con il tuo esempio solr andando: java-jar iniziare --version
e vedrete una discarica come segue: C: \ utenti \ nomeutente \ Desktop \ solr-4.8.0 \ esempio> java -jar start.jar --version Opzioni attive: [default, *] Versione Informazioni su 18 voci nel classpath. Nota: l'ordine presentato qui è come appariranno sul classpath. modifiche alle OPZIONI = [opzione, opzione, ...] l'opzione della riga di comando sarà riflessa su re.
0: (dir) | ${jetty.home}\resources
1: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-xml-8.1.10.v20130312.jar
2: 3.0.0.v201112011016 | ${jetty.home}\lib\servlet-api-3.0.jar
3: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-http-8.1.10.v20130312.jar
4: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-continuation-8.1.10.v20130312.jar
5: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-server-8.1.10.v20130312.jar
6: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-security-8.1.10.v20130312.jar
7: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-servlet-8.1.10.v20130312.jar
8: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-webapp-8.1.10.v20130312.jar
9: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-deploy-8.1.10.v20130312.jar
10: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-servlets-8.1.10.v20130312.jar
11: 1.7.6 | ${jetty.home}\lib\ext\jcl-over-slf4j-1.7.6.jar
12: 1.7.6 | ${jetty.home}\lib\ext\jul-to-slf4j-1.7.6.jar
13: 1.2.16 | ${jetty.home}\lib\ext\log4j-1.2.16.jar
14: 1.7.6 | ${jetty.home}\lib\ext\slf4j-api-1.7.6.jar
15: 1.7.6 | ${jetty.home}\lib\ext\slf4j-log4j12-1.7.6.jar
16: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-util-8.1.10.v20130312.jar
17: 8.1.10.v20130312 | ${jetty.home}\lib\jetty-io-8.1.10.v20130312.jar
Cercare la riga che dice $ {} jetty.home \ lib \ molo-server (in discarica di cui sopra è la linea 5) e si dovrebbe essere in grado di vedere la vostra versione.
Si potrà anche ottenere il "pontile-util" per la versione molo troppo: http://mvnrepository.com/artifact/org.mortbay.jetty/jetty-util
si dovrebbe essere in grado di trovare la versione lì. Ho usato jetty-util-8.1.10.v20130312.jar per il mio.
Ora prendete sia i file servlet.jar e util.jar scaricati e posizionarlo nella cartella seguente: solr-4.8.0 \ esempio \ lib
per la versione potrebbe essere diverso, ma si lo voglio nella cartella lib sotto la directory di esempio.
Infine, per permettere a queste modifiche abbiano effetto, si vuole aprire solr-4.8.0 \ esempio \ etc \ webdefault.xml
e aggiungere le seguenti righe prima </web-app>
:
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Ora riavvia il tuo server e dovresti avere CORS abilitato.
Note: Se si inizia a ottenere l'immaginazione e hanno molteplici applicazioni web in esecuzione sul server pontile esempio solr allora questo influenzerà tutte quelle applicazioni web. Tieni presente che hai impostato l'url patter per riconoscere qualsiasi dominio che sia pericoloso per una configurazione di produzione. Questo è solo per test locali.
Inoltre ho provato a cambiare il file web.xml nella cartella webapps in modo che questi cambiamenti sarebbero rimaste locale, ma dopo ore di cercare di farlo andare, ho rinunciato e ha scoperto che metterlo nel webdefault globale ha funzionato .
Grazie per il collegamento. Lo considererò sicuramente per la mia riserva, ma mi piacerebbe che il CORS funzionasse, se possibile. –
Mi dispiace che ci sia voluto così tanto tempo per darti credito. Alla fine ho implementato la soluzione e ho finito con JSONP perché il supporto per esso è incorporato in Solr. –