geoserver 默认是不允许跨域的,因此需要进行跨域设置
方法一:修改geoserver的相关设置。(以geoserver 2.13.2为例)
步骤一: 修改web.xml配置
在webapps/geoserver/WEB-INF/web.xml中,
<!-- Uncomment following filter to enable CORS -->
<!-- <filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter> -->
<!-- Uncomment following filter to enable CORS -->
<!-- <filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
将注释去掉,改为
<!-- Uncomment following filter to enable CORS -->
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
<!-- Uncomment following filter to enable CORS -->
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--geoserver的各版本的web.xml中cors的注释大同小异,与本文的可能不太一样,
可参看注解 " Uncomment following filter to enable CORS"。
如没有,则手动添加. -->
步骤二: 判断jetty.servlets.jar是否存在
然后在webapps/geoserver/WEB-INF/lib中,是否存在jetty.servlets.jar。如不存在,则需要在网上下载相对应的jar包。
下载地址为:http://central.maven.org/maven2/org/eclipse/jetty/jetty-servlets/ 。
此外,需要下载相对应的依赖包jetty-http.jar和jetty-util.jar。
jar版本查看方式:在https://github.com/geoserver/geoserver/blob/2.13.x/src/pom.xml的中有jar对应的版本说明。
geoserver 版本 | jetty-servlets 、jetty-http 、jetty-util |
---|---|
v2.15.x | v 9.4.12.v20180830 |
v2.14.x | 9.2.13.v20150730 |
v2.13.x | 9.2.13.v20150730 |
v2.12.x | 9.2.13.v20150730 |
v2.11.x | 9.2.13.v20150730 |
v2.10.x | 9.2.13.v20150730 |
如果采用exe安装geoserve的方式,会在geoserver/lib中找到相应的jar.
步骤三: 重启geoserver
方法二:采用nginx进行代理。
在 D:\nginx-1.15.11\conf\nginx.conf中
server {
listen 8089;
server_name localhost;
location /geoserver {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
proxy_pass http://192.168.99.56:8080;
}
}
nginx相关配置请查看官方帮助文档