Java >> Java opplæring >  >> Tag >> Tomcat

CORS - Tomcat - Geoserver

Jeg må gjøre det samme for å unngå bruk av en proxy i OpenLayers.

Siden jeg kjører Ubuntu 12.04, har jeg installert Tomcat 7.0.55 , i stedet for standard 7.0.26 (installert fra pakker).

For å legge til CORS-overskrifter, la jeg ganske enkelt til $CATALINA_HOME/conf/web.xml følgende linjer:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

og start deretter tomcat på nytt.

For eksempel, når jeg prøver å hente URL-adressen http://development.localhost.lan/geoserver/wfs fra Geoserver fra applikasjonen min som kjører på http://localhost:3000 Jeg får følgende overskrifter:

Forespurte overskrifter:

POST /geoserver/wfs HTTP/1.1
Host: development.localhost.lan
Origin: http://localhost:3000
X-Requested-With: XMLHttpRequest
(...)

Svaroverskrifter:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:3000
Connection:Keep-Alive
Content-Disposition:inline; filename=geoserver-GetFeature.text
Content-Encoding:gzip
Content-Length:469
Content-Type:text/xml; subtype=gml/3.1.1
Date:Tue, 29 Jul 2014 21:31:08 GMT
Keep-Alive:timeout=5, max=100
Server:Apache-Coyote/1.1

Dette fungerte med Chrome (ver. 35.0.1916.153) og Firefox (ver. 31.0).


Jeg trengte å legge til følgende i CorsFilter for å forsikre meg om at forhåndskontrollen 'OPSJONER' var tillatt

<init-param>
  <param-name>cors.allowed.methods</param-name>
  <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>

I mitt tilfelle brukte jeg kartoza/geoserver docker-bilde og jeg måtte laste ned GeoServer war-filen fra GeoServer-nettstedet (for versjonen som ble brukt i docker-bildet) og la geoserver.war-filen til katalogen /usr/local/tomcat /webapps/ og startet tomcat på nytt.

Bare med denne konfigurasjonen ovenfor klarte jeg å aktivere CORS. Bare ved å legge til corsFilter-koden til web.xml og starte tomcat på nytt, resulterte det i en 404-feil ved tilgang til GeoServer. Så etter å ha lagt til krigsfilen, gjenkjennes corsFilter-koden og den fungerer bra.

Jeg håper dette hjelper noen med en lignende feil.


Java Tag