当前位置: 首页 > 知识库问答 >
问题:

将geoserver与铯一起使用时出现privateNetworkClientServer错误

贺华容
2023-03-14

我有一个通过http承载图像的地理服务器。我的客户端站点使用https。我一直在使用openlayers,一切都很好。现在我正试图转移到cesiumjs,我在IE或Edge中没有得到任何图像(不幸的是,我无法测试其他浏览器)。如果使用bing地图,我可以在我的客户机中获取图像,因此客户机代码在其他情况下是可用的。在浏览器控制台中,我看到:

SEC7117:网络请求超文本传输协议://[myserver]: 8080/geoserver/cite/仓储管理系统?仓储管理系统

以及:

SEC7111:HTTPS安全性被http://[myserver]:8080/geoserver/cite/wms破坏?服务=WMS

URL是好的;我可以复制/粘贴到一个新的浏览器,并获得瓷砖回来。

有人知道如何避开这件事吗?

共有1个答案

单于帅
2023-03-14

尽管有一些隐晦的错误消息,但这似乎不像我想的那样是一个HTTP/HTTPS问题;这是一个特定于WebGL/CesiumJS的跨源资源共享(CORS)问题。本页底部对其进行了总结:https://cesiumjs.org/tutorials/Imagery-Layers-Tutorial/ .

基本上有两种选择。首先,可以在geoserver中启用CORS。我确认这确实解决了我的开发环境中的问题。然而,在prod中,这并不是我们真正的选择。

另一个选项是设置一个代理,在该代理中,铯不会直接请求磁贴,而是从您自己的web服务器请求磁贴,然后您的web服务器手动获取磁贴。走这条路线时,您可以这样修改铯:

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