使用带有铯的地理服务器时出现privateNetworkClientServer错误

Posted

技术标签:

【中文标题】使用带有铯的地理服务器时出现privateNetworkClientServer错误【英文标题】:privateNetworkClientServer error when using geoserver with cesium 【发布时间】:2018-02-01 16:05:46 【问题描述】:

我有一个通过 http 托管图像的地理服务器。我的客户网站使用 https。我一直在使用 openlayers,一切都很完美。现在我正在尝试迁移到 cesiumjs,但在 IE 或 Edge 中没有得到任何图像(不幸的是,我无法测试其他浏览器)。如果使用必应地图,我可以在我的客户端中获取图像,因此客户端代码可以正常工作。从浏览器控制台我看到:

SEC7117:对http://[myserver]:8080/geoserver/cite/wms?service=WMS&version=1.1.1&request=GetMap&styles=&format=image%2Fjpeg&layers=cite%3Abmpyramid&srs=EPSG%3A3857&bbox=195678.7924100496%2C156543.03392804041%2C234814.55089206248%2C195678.7924100496&width=256&height=256 的网络请求未成功。此 Internet Explorer 实例不具备以下功能:privateNetworkClientServer

和:

SEC7111:HTTPS 安全性受到http://[myserver]:8080/geoserver/cite/wms?service=WMS&version=1.1.1&request=GetMap&styles=&format=image%2Fjpeg&layers=cite%3Abmpyramid&srs=EPSG%3A3857&bbox=195678.7924100496%2C195678.7924100496%2C215246.6716510579%2C215246.6716510579&width=256&height=256 的威胁

网址很好;我可以复制/粘贴到新的浏览器中并取回图块。从开发工具的浏览器网络选项卡中,我可以看到没有传出的图像请求。

有人知道解决这个问题的方法吗?

【问题讨论】:

【参考方案1】:

尽管有神秘的错误消息,但这似乎不是我想象的 HTTP/HTTPS 问题;这是 WebGL/CesiumJS 特有的跨域资源共享 (CORS) 问题。总结在本页底部附近:https://cesiumjs.org/tutorials/Imagery-Layers-Tutorial/。

基本上有两种选择。首先,您可以在地理服务器中启用 CORS。我确认这确实解决了我的开发环境中的问题。然而,这对我们来说并不是一个真正的选择。

另一种选择是设置一个代理,而不是 cesium 直接请求切片,它从您自己的 Web 服务器请求它们,然后您的 Web 服务器手动获取它们。走这条路时,您可以像这样修改您的铯:

layers.addImageryProvider(new Cesium.ArcGisMapServerImageryProvider(
    url : '//server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer',
    proxy : new Cesium.DefaultProxy('/proxy/')
));

【讨论】:

以上是关于使用带有铯的地理服务器时出现privateNetworkClientServer错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在地理空间数据云下载DEM数据时出现只允许一个数据集?

使用带有 Promises 的嵌套云代码函数时出现 ParseError

使用带有 TypeOrm 的 NestJS 连接 MySQL 数据库时出现问题

使用带有 Ajax 查询的预先输入时出现 ember-select-2 问题

使用带有 Ajax 查询的预先输入时出现 ember-select-2 问题

使用带有gradle的spring数据时出现NoClassFoundDefError