在使用了geoserver发布了矢量切片地图并使用了https://github.com/Leaflet/Leaflet.VectorGrid插件访问之后,莫名的出现了跨域问题:
之所以wms等服务不会出现跨域问题好像是因为它们请求的是“静态资源”,比如图片什么的,总之别在代码上动什么手脚,按照以下教程更改geoserver配置就好,看好文件路径。
作者:xushiluo
链接:https://www.jianshu.com/p/3bce123cbaf4
來源:简书
一、系统环境
- Windows 10 64bit专业版( 版本 1703)
二、文件准备
- geoserver-2.11.2.exe
geoserver的官网上下载,也可以到sourceforge上下载。官网:http://geoserver.org/
这个版本的geoserver是自带Jetty的(即自带web服务器)。我们不再需要单独下载Tomcat等web服务器了。
- jdk-8u144-windows-x64.exe
geoserver依赖于JRE,实际上geoserver应该是个32位的程序。我这里安装的是一个64位的Jdk 8。有了JDK,当然JRE就有啦。虽然geoserver是32位的,但是使用jdk 64bit并没有问题。
- jetty-servlets-9.2.13.v20150730.jar
这个是配置跨域资源访问一个很重要的jar包了,下载地址在这里:
https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-servlets
或者这里:http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/
如何确定我们需要的jetty-servlets版本呢?下面会说的。
三、JDK和Geoserver安装
3.1 JDK安装。
Geoserver是依赖于JRE的,所以可以安装JRE,也可以安装JDK。geoserver-2.11.2是以来Java 8的。所以需要安装Java 8版本的JDK。我这里从官网上下载:jdk-8u144-windows-x64.exe
安装过程没什么好说的,直接下一步就行。没有什么特殊的设置。
3.2 Geoserver安装
点击安装包geoserver-2.11.2.exe,按照提示下一步就好了。选择时,记得选择安装为service,而不要选择手动启动。让它自动启动比较省事。就是下面这个界面了。端口的话,可以使用默认的8080,我安装时改为了80。因为我的80端口没有被占用。
四、CORS跨域资源访问
Geoserver的跨域资源访问需要修改2个地方:
- GeoServer 2.11.2/webapps/geoserver/WEB-INF/web.xml
- GeoServer 2.11.2/webapps/geoserver/WEB-INF/lib
4.1 修改web.xml
用notepad++打开Geoserver安装目录下webapps/geoserver/WEB-INF/web.xml。找到filter和filter-mapping相邻的地方。发现有2段xml被注释掉了。上面写的:Uncomment following filter to enable CORS 。所以,我们把下面的注释去掉即可。去掉后如下所示:
4.2 拷贝jetty-servlets-9.2.13.v20150730.jar到lib目录
上面提到过,需要jetty-servlets-9.2.13.v20150730.jar这个文件。我们是如何确实是9.2.13.v20150730这个版本号的呢?可以到Geoserver的安装目录下的lib文件夹中查看,如下:
这样就可以确定,我们需要的jetty-servlets版本是9.2.13.v20150730了。到https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-servlets
或者这里:http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-servlets/ 下载即可。
下载后,将jetty-servlets-9.2.13.v20150730.jar复制到Geoserver安装目录下的webapps/geoserver/WEB-INF/lib文件夹中。
五、重启Geoserver服务
在Windows下方的任务栏空白处右键单击,选择任务管理器。点击对话框左下角的【详细信息】,就会展开详细页。找到【服务】这个页签。在geoserver项上右键单击重启即可。
下面,就可以愉快地使用Geoserver啦!也可以跨域访问(CORS)啦!