我有一个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
和:
网址很好;我可以复制/粘贴到新的浏览器中并获取瓷砖 . 从开发工具的浏览器网络选项卡我可以看到没有传出图像请求 .
有没有人知道解决这个问题的方法?
1 回答
尽管有神秘的错误消息,但似乎这不像我想的那样是HTTP / HTTPS问题;这是WebGL / CesiumJS特有的跨源资源共享(CORS)问题 . 它总结在本页底部附近:https://cesiumjs.org/tutorials/Imagery-Layers-Tutorial/ .
基本上有两种选择 . 首先,您可以在地理服务器中启用CORS . 我确认这确实在我的开发环境中解决了这个问题 . 但是,这对我们来说并不是一个真正的选择 .
另一个选项是设置代理,而不是直接请求磁贴的cesium,它从您自己的Web服务器请求它们,您的Web服务器手动获取它们 . 当你走这条路线时,你就像这样修改你的铯: