基于Cesium1.26地图API下的GeoServer2.90服务器跨域设置

遇到的问题:

  最近基于Cesium来做3D模型的地图开发,在访问自己发布的WMS服务之后,遇到了GeoServer跨域问题。

  调用这个WMS服务的时候,浏览器(我用Chrome)开发者工具报错:

控制台提示如下:

  Font from origin ‘http://xxxxxxxxxxxxx‘ has been blocked from loading by Cross-Origin Resource Sharing policy: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://localhost‘ is therefore not allowed access.

这是因为服务端不允许跨域访问所导致的问题。

解决方案:

1、下载官方的cors压缩包,解压得到两个jar包,两个jar包文件放入geoserver目录下web容器的类库文件夹中。

2、打开geoserver目录下web容器的中的xml配置文件。

3、添加过滤器代码和过滤器路由代码。

4、重启geoserver。

ps:如果目录中存在maven,需要在pom.xml中,添加一个依赖标签。

pss:为了服务大家,本人制作了压缩包

psss:经本人测试,这个跨域访问方法可以应用于大多数服务器,不仅仅局限于GeoServer

CORS(跨域资源共享)小课堂:

  CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能(IE浏览器不能低于IE10)。

  整个CORS通信过程,都是浏览器自动完成,不需要用户参与。浏览器一旦发现请求跨源,就会自动添加一些附加的头信息,但用户不会有感觉。

  因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

  

  请求流程:

    1、在你发送任意请求时,浏览器会将CORS请求合并到http请求之中。具体来说,就是在头信息之中,增加一个Origin字段。

    

    2、上面的头信息中,Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。

    3、如果Origin指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应。

    4.1、浏览器发现,这个回应的头信息没有包含Access-Control-Allow-Origin字段,就知道出错了,从而抛出一个错误,被XMLHttpRequestonerror回调函数捕获。

    4.2、如果Origin指定的域名在许可范围内,服务器返回的响应,会多出几个头信息字段。

    

    5、其中最重要的是Access-Control-Allow-Origin这个字段,这个字段规定了可以得到本资源的域,如果头信息有此字段,这个字段与客户端浏览器应该是同域的。

时间: 2024-10-14 15:11:54

基于Cesium1.26地图API下的GeoServer2.90服务器跨域设置的相关文章

ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法: 1.确定你的Silverlight项目及承载Silverlight的Web程序根目录下都包含2个跨域文件,分别是crossdomain.xml和clientaccesspolicy.xml: crossdomain.xml文件,如下: <?xml ve

Android_LIFE帮(基于最新百度地图API的开源项目)

越来越多的APP用到了地图API,所以本人依赖百度地图提供的API做了一个简单的项目,希望大家多多支持和star一下!! SoHOT链接和star地址:SoHoT链接下载地址,最后有github开源地址,别错过 如果您还没有去给SoHOT一颗star而直接看这个项目,那简直是有点损失,希望您点上面的链接,去star和下载体验一下SoHoT,捡起那个大西瓜再来捡这个小芝麻项目,你懂的!! 首先我们来看下项目预览 先来一张项目结构图 声明一下,代码没有重新整理,有点略乱,如果你想运行项目到你AS中请

前端开发用nginx代理服务器解决服务器跨域问题及跨域访问https访问(mac系统下)

前端开发经常遇到一些服务器由于跨域造成访问不了的情况.以前BS模式,前后端都是一个人开发,跨域问题造成的开发阻碍不是很明显,但是现在前端框架欣欣向荣,很多时候变成了CS模式的开发,但浏览器天生的跨域限制,造成了开发,特别是对单独的前端开发人员(不太懂后台开发的人)造成一定开发障碍.还好有nodejs及其一系列前端自动化工具很好的解决了开发时的问题.但今天我要说的用nginx代理来解决这个问题.我觉得很简单!以下都是基于mac系统的操作!先看没有代理时,随便访问网上一个接口, http://web

【Python】Bottle框架下Python Web开发的跨域访问

上一篇文章中介绍了Python应用Bottle轻量级框架进行Web开发,这次介绍Bottle框架下的跨域访问的问题. 当前台跨域访问时,会无法从后台得到数据,也就是说跨域访问失败. 解决办法如下: 在程序中定义一个函数代码如下: #!/usr/bin/python # -*- conding:utf-8 -*- from bottle import * #decorator def allow_cross_domain(fn): def _enable_cors(*args, **kwargs)

IIS下配置跨域设置

1.设置Access-Control-Allow-Origin 2.添加"HTTP响应标头" 打开IIS,找到"HTTP响应标头"点进去,在右侧可以看到添加,然后添加如下标头即可 Access-Control-Allow-Headers:Content-Type, api_key, Authorization Access-Control-Allow-Origin:*

IIS下配置跨域设置Access-Control-Allow-Origin

设置Access-Control-Allow-Origin json文件通过服务器,设置跨域,可以解决调用:如www.xxx.com/xxxx.json 打开IIS,找到“HTTP响应标头”点进去, 在右侧可以看到添加,然后添加如下标头即可 Access-Control-Allow-Headers:Content-Type, api_key, Authorization Access-Control-Allow-Origin:*  以下来源:https://developer.mozilla.o

Web API(七):Web API跨域问题

一.什么是跨域问题 跨域:指的是浏览器不能执行其他网站的脚本.是由浏览器的同源策略造成的,是浏览器施加的安全限制.(服务端可以正常接收浏览器发生的请求,也可以正常返回,但是由于浏览器的安全策略,浏览器不能处理服务端的返回). 那么什么是同源策略呢? 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CSFR等攻击.所谓同源是指"协议+域名+端口"

ASP.NET Web API 跨域访问

情景:http://localhost:8080/的web应用下访问http://localhost:8081下的Action时称为跨域访问. 前提,启动8080web应用实例,再启动8081web应用实例利用ajax去访问. 首先,在自己的Web API应用中,添加NuGet服务包,联机: 然后选择图中的,安装: 在Web API应用的App_Start/WebApiConfig.cs下的 public static void Register(HttpConfiguration config

七牛---以一个七牛上传的实例小结下AJAX跨域【转】

http://blog.csdn.net/netdxy/article/details/50699842 使用七牛过程中,很多用户或多或少遇到跨域的问题,这篇文章主要介绍下跨域的概念来看什么情况下会出现跨域以及七牛关于跨域的策略. 关于跨域的,说白点就是去别服务器上取东西,域当然是别的服务器,只要协议.域名.端口有任何一个不同,都被当作是不同的域.这里以表单上传结合AJAX请求获取Token上传的Demo为切入点具体看下什么时候会出现跨域. 以下是Demo的代码示例,需要注意的是请求token的