使用OpenLayers请求GeoServer发布的WFS服务时,如果不是相同的域可能会出现如下问题。

已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/geoserver/weng_test/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=weng_test:
dw_country&maxFeatures=50&outputFormat=application%2Fjson 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

Geoserver 测试版本为 2.12.1。可有以下两种方案。

方案1

(1)下载跨域jar包jetty-servlets.jar

下载geoserver使用的对应jetty版本——可以查看<Geoserver>\lib下jetty-servlet.jar (如,Geoserver 2.12.1 版本下的为 jetty-servlet-9.2.13.v20150730.jar)的版本作为对照。

下载地址:http://central.maven.org/maven2/org/eclipse/jetty/jetty-servlets/

并将jar包放到<Geoserver>\webapps\geoserver\WEB-INF\lib文件夹下。

(2)filter的位置

打开<Geoserver>\webapps\geoserver\WEB-INF\web.xml文件,找到文件中<filter>平级的位置,添加如下内容:

<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.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>

(3) filter-mapping设置

找到文件中<filter-mapping>平级的位置,添加如下内容:

<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

(4) 重启Geoserver服务

方案2

(1)下载cors-filter-1.7.jar,Java-property-utils-1.9.jar两个库文件

下载后,将其放到<Geoserver>\webapps\geoserver\WEB-INF\lib目录下。

下载地址:http://files.cnblogs.com/files/ytwy/jar.rar

(2)filter设置

打开<Geoserver>\webapps\geoserver\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>

(3) filter-mapping设置

找到文件中<filter-mapping>平级的位置,添加如下内容:

<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

参考文章

GeoServer配置CORS(跨域资源共享)  , Tomcat形式的Geoserver跨域设置。

GeoServer跨域设置

浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)

Geoserver WFS跨域设置

Geoserver跨域请求设置的更多相关文章

  1. ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  2. 【转】ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  3. 跨域请求设置withCredentials

    最近在做运动城项目,这一个项目下面有多个子项目,如主数据项目,pos项目等.主数据项目的域名为www.topmall.com,POS项目的域名为pos.topmall.com.即两个项目的主域名相同, ...

  4. Fetch+SpringBoot跨域请求设置

    两种方法从SpringBoot的方向解决跨域问题 今天搭建博客的时候,尝试性的传递数据,发现浏览器报了这个错误 -blocked by CORS policy: No 'Access-Control- ...

  5. Chrome本地跨域请求设置,实现HTML模板页

    按照需求,公司现在需要通过第三方的API反馈的数据,进行在本地就可以打开的静态页面程序(完全脱离IIS等服务器).为了更好的维护项目,需要实现静态HTML引入HTML模板,完成ASP.NET模板页的类 ...

  6. Asp.Net Core2.0允许跨域请求设置

    1.services /// <summary> /// /// </summary> /// <param name="services">& ...

  7. ASP.NET MVC 允许跨域请求设置

    场景:创建一个图片上传的站点,用于其他站点跨域上传附件和图片之类. 上传插件结合百度的 webuploader.js 经常会碰到,跨域的问题,如下, 处理方式呢,是在web.config 中配置允许跨 ...

  8. node 跨域请求设置

    http.createServer((req,res)=>{ //设置允许跨域的域名,*代表允许任意域名跨域 res.setHeader("Access-Control-Allow-O ...

  9. springboot跨域请求设置

    当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域HTTP请求(Cross-site HTTP request).比如说,域名A ( http://domaina ...

随机推荐

  1. ACM训练联盟周赛 A. Teemo's bad day

    65536K   Today is a bad day. Teemo is scolded badly by his teacher because he didn't do his homework ...

  2. cs229课程索引

    重要说明 这个系列是以cs229为参考,梳理下来的有关机器学习传统算法的一些东西.所以说cs229的有些内容我会暂时先去掉放在别的部分里面,也会加上很多重要的,但是cs229没有讲到的东西.而且本系列 ...

  3. debian7安装icedove

    stable --icedove --esr $ cat /etc/apt/sources.list | grep "deb http://security.debian.org/ whee ...

  4. 实现hadoop自动安装包

    最近研究hadoop,需要安装多个dadanode,想从重复劳动解脱出来,只能自己实现自动安装包,开始考虑使用shell.python等实现,感觉比较费时间,用installshield又有点牛刀小试 ...

  5. Spring核心技术(十三)——环境的抽象

    本章将描述一下Spring中针对环境的抽象. Environment是一个集成到容器之中的特殊抽象,它针对应用的环境建立了两个关键的概念:profile和properties. profile是命名好 ...

  6. kNN的维数灾难与PCA降维

    主成分分析 PCA 协方差矩阵 假设我们有 \[ X = \begin{pmatrix}X_1\\X_2\\\vdots\\X_m\end{pmatrix}\in\mathbb{R}^{m\times ...

  7. 利用Python从文件中读取字符串(解决乱码问题)

    首先声明这篇学习记录是基于python3的. python3中,py文件中默认的文件编码就是unicode,不用像python2中那样加u,比如u'中文'. 不过在涉及路径时,比如C:\Users\A ...

  8. iOS学习笔记02-UIScrollView

    父类UIView方法 // autoresizingMask - 现在基本弃用,改用autoLayout typedef NS_OPTIONS(NSUInteger, UIViewAutoresizi ...

  9. Bind Enum To DropDownList ?

    0. 准备测试数据 0.1 : 枚举 using System; using System.Collections.Generic; using System.Linq; using System.W ...

  10. CodeForces 333E. Summer Earnings

    time limit per test 9 seconds memory limit per test 256 megabytes input standard input output standa ...