近期给旧项目作协议升级,恰好碰到引用的百度地图API的坑,踩完坑记一记,或许也能帮到其余小伙伴呢,哈哈哈~javascript
页面引用由java
http://api.map.baidu.com/getscript?v=2.0&ak=秘钥&services=&t=时间
复制代码
修改为:api
//api.map.baidu.com/getscript?v=2.0&ak=秘钥&services=&t=时间
复制代码
会报如下安全提示:安全
一、搜索了许多相关关键词找到的解决方法大体都是添加‘&s=1’参数,可是也没有生效,也贴一下这个:bash
https://api.map.baidu.com/api?v=2.0&ak=你的密钥&s=1
复制代码
二、参考百度地图API加载方式: www.jiazhengblog.com/blog/2011/0…ui
对https的返回和http请求该文件的返回对比: http请求:spa
(function(){ window.BMap_loadScriptTime = (new Date).getTime(); document.write('<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=你的密钥&services=&t=20180201111639"></script>');})();
复制代码
https请求:3d
(function(){window.HOST_TYPE = "2"; window.BMap_loadScriptTime = (new Date).getTime(); document.write('<script type="text/javascript" src="https://api.map.baidu.com/getscript?v=2.0&ak=你的密钥&services=&t=20180201111639"></script>');})();
复制代码
发现走https请求的多了一个赋值:code
window.HOST_TYPE = "2";
复制代码
因而就直接暴力作了一个协议区分赋值cdn
const protocolStr = document.location.protocol
switch (protocolStr) {
case 'https:':
// 指定https访问类型,具体见百度地图API加载方式:http://www.jiazhengblog.com/blog/2011/06/28/284/
window.HOST_TYPE = '2'
break
default:
break
}
复制代码
再引用:
//api.map.baidu.com/getscript?v=2.0&ak=秘钥&services=&t=时间
复制代码