首页 文章

使用带有cesium的geoserver时出现privateNetworkClientServer错误

提问于
浏览
0

我有一个geoserver托管图像通过http . 我的客户端站点使用https . 我一直在使用openlayers,一切都很完美 . 现在我正在尝试转移到cesiumjs,我没有在IE或Edge中获得任何图像(我无法测试其他浏览器) . 如果使用bing贴图,我可以在我的客户端获取图像,因此客户端代码是功能性的 . 从浏览器控制台我看到:

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: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破坏了HTTPS安全性

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

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

1 回答

  • 0

    尽管有神秘的错误消息,但似乎这不像我想的那样是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/')
    }));
    

相关问题