cesium 中https使用地球皮肤请求地址不安全问题

2019-10-1 Jon js库

在https环境下使用cesium时若是出现地球皮肤无法访问的问题
这时点击该地址会报不安全的网络
其实是因为早期的cesium版本中没有设计安全https皮肤地址
只需要更新最新的cesium即可,但是往往情况复杂不予许随便更新,又或者怕更新后出现新问题
那么只需要对之前的cesium.js文件进行修复即可
修复也是很简单

打开node_modules/cesium/Build/CesiumUnminified/Cesium.js
搜索Imagery/Metadata并找到如下代码
var metadataResource = this._resource.getDerivedResource({
    url:'REST/v1/Imagery/Metadata/' + this._mapStyle,
    queryParameters: {
        incl: 'ImageryProviders',
        key: this._key
    }
});
并将其改为(加上参数uriScheme:"https"
var metadataResource = this._resource.getDerivedResource({
    url:'REST/v1/Imagery/Metadata/' + this._mapStyle,
    queryParameters: {
        incl: 'ImageryProviders',
        key: this._key,
        uriScheme:"https"
    }
});
此文件只是未压缩的给开发者看的,真正修改还需要找到
node_modules/cesium/Build/Cesium/Cesium.js
找到
{url:"REST/v1/Imagery/Metadata/"+this._mapStyle,queryParameters:{incl:"ImageryProviders",key:this._key}})
改为
{url:"REST/v1/Imagery/Metadata/"+this._mapStyle,queryParameters:{incl:"ImageryProviders",key:this._key,uriScheme:"https"}})
即可

不建议修改node_modules文件因为这样在重新获取包时修改将不复存在,并且不易维护
所以这里直接使用gulpfile.js修改打包好的文件
在对应的位置替换掉
.replace('{incl:"ImageryProviders",key:this._key}', '{incl:"ImageryProviders",key:this._key,uriScheme:"https"}');

这样运行时的报错就不见了

分享这篇文章
赞助鼓励:如果觉得内容对您有所帮助,您可以支付宝(左)或微信(右):

声明:如无特殊注明,所有博客文章版权皆属于作者,转载使用时请注明出处。谢谢!

发表评论:

皖ICP备15010162号-1 ©2015-2020 知向前端
qq:1614245331 邮箱:13515678147@163.com Powered by emlog sitemap