GeoServer 跨域方法匯總


環境

  • Linux CentOS 7.5
  • tomcat 9.0.33
  • geoserver 2.15.2
  • geowebcache 1.10.0

操作步驟

Geoserver有多個跨域解決方法,在各個環境下有的有效有的無效,具體原因未知,請客官們自行嘗試。在此只是對用到過成功的案例做個記錄。

方法一(獨立bat版現用方法)

  1. 找到geoserver配置文件/geoserver/WEB-INF/web.xml
    geoserver配置文件

  2. 文檔中搜索關鍵詞'cross-origin',發現web.xml中有兩處被注釋的節點,放開注釋。
    filter
    filter-mapping

  3. 找到jetty-servlets-9.4.12.v20180830.jar,將其復制到/geoserver/WEB-INF/lib目錄底下

  4. 重啟Geoserver。這時候Geoserver可能會啟動不了,報錯503(Problem accessing /geoserver/web/. Reason: Service Unavailable Powered)

  5. 這時再下載對應 jetty-http-9.4.12.v20180830.jar 和 jetty-util-9.4.12.v20180830.jar jar包,放在WEB-INF/lib目錄,再次重啟即可(注意:jetty-servlets的jar包要跟jetty-util及jetty-http的jar包版本匹配)

  6. 重啟geoserver

方法二

** 方法二與方法五類似,方法二是放在geoserver的lib下,方法五是放在tomcat的lib下。區別是獨立版和tomcat版部署方式 **

  1. 同時下載cors-filter-1.7.jar 跟 java-property-utils-1.9.jar (其他版本可能會導致 geoserver 打不開,測試過用最新版本出現geoserver打不開),放進 /geoserver/WEB-INF/lib 文件夾里面

  2. /geoserver/WEB-INF/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>

方法三

  1. 下載跨域文件CrossOriginFilter.class,然后解壓到 \geoserver\WEB-INF\classes,保持原有路徑(\geoserver\WEB-INF\classes\org\mortbay\servlets\CrossOriginFilter.class)
    CrossOriginFilter

  2. 然后在 /geoserver/WEB-INF/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>

方法四

  1. 編輯 geoserver\WEB-INF\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版現用方法)

  1. 基於tomcat可以對tomcat進行跨域

  2. 將cors-filter-2.4.jar 和 java-property-utils-1.9.1.jar 包放到 /tomcat/lib 下

  3. 修改/tomcat/conf/下的web.xml文件,在<web-app></web-app>節點中添加
    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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM