2017-03-21 6 views

답변

3

BaseX는 후드 아래에서 부두를 사용합니다. 당신의 $CLASSPATH (BaseX 이미 선박에 jetty-servlets 단지를 추가 한 당신은 부두가 CORS 헤더를 보낼 수 있도록하기 위해 web.xml 파일을 수정할 수 있지만 하나

  • 사용은 적어도 BaseX 8.6.3 jetty-servlets 라이브러리 또는
  • 을 추가하는 jetty-servlet, 이는 다른 클래스이며, BaseX에 포함 된 것과 일치하는 적절한 버전을 가져와야합니다.)

web.xml 파일에 다음과 같은 지시를 포함 :

<web-app> 
    <!-- add those before the closing web-app tag: --> 
    <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> 
</web-app> 

부두 와일드 카드 헤더 Access-Control-Allow-Origin: * 게시 지원하지 않는 것주의하십시오 : 기본 이미

<init-param> 
    <param-name>allowedOrigins</param-name> 
    <param-value>*</param-value> 
</init-param> 

동안 (넣어 즉, <filter/> 요소로), Jetty는 이것을 사용하여 정규식을 구성하고 항상 Origin: 요청 헤더 i의 값을 반환합니다 일치하지만, 그것은 또한 당신을 잘 제공해야합니다.

예 요청이 오히려 합리적인 요청해야 할 것은, 당신은 기본적으로 기본적으로 라이브러리, 그리고 어쩌면 가능 CORS를 포함하는 opening an issue 성공할 수 있습니다 보인다 감안할 때

$ curl -v -H "Origin: http://foo.example" http://admin:[email protected]:8984/rest 
* Trying ::1... 
* Connected to localhost (::1) port 8984 (#0) 
* Server auth using Basic with user 'admin' 
> GET /rest HTTP/1.1 
> Host: localhost:8984 
> Authorization: Basic YWRtaW46YWRtaW4= 
> User-Agent: curl/7.50.1 
> Accept: */* 
> Origin: http://foo.example 
> 
< HTTP/1.1 200 OK 
< Content-Type: application/xml; charset=UTF-8 
< Content-Length: 152 
< Server: Jetty(8.1.18.v20150929) 
< 
<rest:databases xmlns:rest="http://basex.org/rest" resources="1"> 
    <rest:database resources="1" size="96234589">test</rest:database> 
</rest:databases> 
* Connection #0 to host localhost left intact 

. (이 라이브러리는 기본적으로 포함되어 있습니다.)

+0

이 해답을 가져 주셔서 감사합니다. 이 기능을 요청했습니다 : https://github.com/BaseXdb/basex/issues/1441 – Seb3736

+0

답변을 약간 수정 했으므로 이제 BaseX가 라이브러리를 제공한다는 점을 감안합니다. –