事情缘由
前段时间项目部署生产环境,由于测试环境一直使用 http 协议进行部署访问,生产环境申请网络权限时 https 协议,由于 https 协议中无法直接调用 http 接口,所有请求都需要使用 https 协议,这其中也用到了百度地图 api,在查看了官方 api 文档后发现直接使用 https 是支持的,就直接使用,后面发现直接使用会影响关键词查询精度问题,比如搜索工商银行就搜索不到。
错误提示
Mixed Content: The page at ‘localhost:8080
’ was loaded over HTTPS, but requested an insecure script ‘http://api.map.baidu.com/api?v=3.0&ak=
‘. This request has been blocked; the content must be served over HTTPS.
VM255 addshopview.html:381 Uncaught ReferenceError: BMap is not defined.
解决方案
百度发现有些人是遇到了这样的问题的,特地记录一下
正常 https 首先是获取 getscript.js 文件,这个文件里面有一个 window 变量 HOST_TYPE,默认是 0,为 0 时走的 http,需要在引入 getscript.js 前让他变为非 0 值即可,这样才能走 https,具体可以查看 getscript.js 文件。
修改引入地址
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=&s=1"></script>
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于