유용한 정보는 this입니다. CORS를 사용하려면 몇 개의 부두 단지와 webdefault.xml을 변경해야합니다.
나는 여기에 텍스트를 재현하고있다 : 예제 SOLR 프로젝트에서
당신이 다음 줄을 호출하여 시작할 때 :
이
자바 당신이를 시작
을 시작 -jar solr 결과를 제공 할 로컬 컴퓨터의 Jetty 서버. 이 서버는 CORS (Cross Origin Resource Sharing)를 수행 할 수 없습니다. 즉, 서버 자체와 다른 출처의 웹 페이지에서 AJAX 호출을 시도하면 응답이 거부됩니다.
이 문제를 해결하려면 먼저 도메인 간 리소스 공유가 가능하도록 apillary 항아리를 얻어야합니다.
나는 다음 항아리 사용 :
http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/8.1.10.v20130312/
을하지만 당신은 부두의 버전에 맞아 버전을 얻을 필요가 있습니다 http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/
당신은 실행중인 부두의 버전을 확인할 수 있습니다 예를 들어 java -jar start --version
C : \ Users \ username \ Desktop \ solr-4.8.0 \ example> java -jar 다음과 같이 덤프가 표시됩니다. start.jar --version 활성 옵션 : [default, *] 버전 클래스 경로의 18 개 항목에 대한 정보. 참고 : 여기에 표시된 순서는 클래스 경로에 표시되는 순서입니다. OPTIONS = [option, option, ...] 명령 줄 옵션을 변경하면 해당 내용이 에 반영됩니다. (이 라인 (5)의 위의 덤프) 당신이 당신의 버전을 볼 수 있어야합니다 $ {jetty.home} \ lib 디렉토리 \ 부두 서버를 말한다 라인
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
봐. http://mvnrepository.com/artifact/org.mortbay.jetty/jetty-util
당신이 버전을 찾을 수 있어야합니다 :
는 또한 "이 부두 - UTIL"너무 당신의 부두 버전 싶어합니다. 나는 jetty-util-8.1.10.v20130312.jar를 사용했다.
이제 걸릴 모두 다운로드하고 다음 폴더로를 두는 servlet.jar 파일 및 util.jar 파일 :이 다를 수 있습니다 버전 SOLR-4.8.0 \ 예 \ lib에
하지만 당신에게 예제 디렉토리 아래의 lib 폴더에 넣기를 원할 것입니다.
마지막으로, 이러한 변경은 \ 당신이 SOLR-4.8.0 \ 예를 열고 자,이 적용 할 수 있도록하는 등 \ webdefault.xml
다음과 같은 줄을 추가 </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>
이제 서버를 다시 시작하면 CORS가 활성화되어 있어야합니다.
참고 : 솔직한 jetty 서버에서 멋진 웹 응용 프로그램을 실행하고 있으면이 모든 웹 응용 프로그램에 영향을줍니다. 프로덕션 설정에 위험한 도메인을 인식하도록 URL 패턴을 설정했는지 확인하십시오. 이는 로컬 테스트 용입니다.
또한 webapps 폴더의 web.xml 파일을 변경하려고 시도 했으므로 이러한 변경 사항은 로컬에 유지되지만 갈 시간이 지나면 포기하고 글로벌 webdefault에서 작업 한 것을 발견했습니다. .
감사합니다. 나는 나의 후퇴를 위해이 점을 분명히 고려할 것이지만 가능한 한 실제 CORS를 원한다. –
죄송합니다. 신용을 제공하는 데 너무 오래 걸렸습니다. 솔직히 JSONP에 대한 지원이 Solr에 내장되어 있으므로 마침내 솔루션을 구현하고 JSONP를 사용하게되었습니다. –