geoserver默認不開啟跨域設置,開啟步驟如下:
嘗試以下幾種方法:
方法一:
1、修改配置文件web.xml,該配置文件的路徑如下
\webapps\geoserver\WEB-INF\web.xml
2、搜索:cross-origin,將注釋的部分解注。
<!-- Uncomment following filter to enable CORS --> <filter> <filter-name>cross-origin</filter-name> <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> <init-param> <param-name>chainPreflight</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>allowedOrigins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>allowedMethods</param-name> <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value> </init-param> <init-param> <param-name>allowedHeaders</param-name> <param-value>*</param-value> </init-param> </filter> <!-- Uncomment following filter to enable CORS --> <filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、下載 jetty-servlets jar包,2.15.0對應的版本是 jetty-servlets-9.4.12.v20180830.jar,放在
\geoserver\WEB-INF\lib
4、重啟geoserver,如果報錯,再下載對應 jetty-http 和 jetty-util jar包,放在lib目錄,再次重啟即可,jetty-servlets的jar包要跟jetty-util的jar包版本匹配,jar包下載地址:
https://pan.baidu.com/s/1E9Z4_zGfWWxkJpEZ0yyrPg ,提取碼 d96c
方法二:
同時下載cors-filter-1.7.jar 跟 java-property-utils-1.9.jar (其他版本可能會導致 geoserver 打不開,測試過用最新版本出現geoserver打不開),同樣放進 lib 文件夾里面,web.xml 增加以下配置:
<filter> <filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.supportedMethods</param-name> <param-value>GET, POST, HEAD, PUT, DELETE</param-value> </init-param> <init-param> <param-name>cors.supportedHeaders</param-name> <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value> </init-param> <init-param> <param-name>cors.exposedHeaders</param-name> <param-value>Set-Cookie</param-value> </init-param> <init-param> <param-name>cors.supportsCredentials</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
方法三:
下載cors壓縮包 ,提取碼:mdzo , 然后解壓到 %TOMCAT_PATH%\webapps\geoserver\WEB-INF\classes,然后在 web.xml 配置:
<filter> <filter-name>cross-origin</filter-name> <filter-class>org.mortbay.servlets.CrossOriginFilter</filter-class> <init-param> <param-name>allowedOrigins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>allowedMethods</param-name> <param-value>GET,POST</param-value> </init-param> <init-param> <param-name>allowedHeaders</param-name> <param-value>x-requested-with,content-type</param-value> </init-param> </filter> <filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
方法四:
在 geoserver 的 web.xml,不需要引入任何庫,進行如下配置
<filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
重啟Tomcat。
方法五
基於tomcat安裝的話,可以試試給tomcat整體配跨域策略
解決方案:
一:在tomcat中的lib文件夾下增加兩個jar包
cors-filter-2.4.jar 提取碼 eqlq
java-property-utils-1.9.1.jar 提取碼 ybz7
二:在tomcat中的conf文件夾下的web.xml文件中的web-app代碼下增加如下代碼
<filter> <filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.supportedMethods</param-name> <param-value>GET,POST,HEAD,PUT,DELETE</param-value> </init-param> <init-param> <param-name>cors.supportedHeaders</param-name> <param-value>Accept,Origin,X-Requested-With,Content-Type,Last-Modified</param-value> </init-param> <init-param> <param-name>cors.exposedHeaders</param-name> <param-value>Set-Cookie</param-value> </init-param> <init-param> <param-name>cors.supportsCredentials</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
重啟tomcat