您的位置:首页 > 理论基础 > 计算机网络

谷歌地图服务Google Map Service 如何使用HTTP而不用HTTPS

2013-12-18 15:19 796 查看
谷歌地图服务GoogleMap Service 如何使用HTTP而不用HTTPS

@author Anderson Mao, 2013-03-28

使用Google Map V3, 可以用HTTP,也可以用HTTPS
http://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&sensor=false https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&sensor=false
由于在大陆使用https会间歇性访问不了,所以可以用http访问。

但是,当使用Google Map Service的时候。比如

var placesService = newgoogle.maps.places.PlacesService(this.map);

placesService.textSearch(request,myCallback);

Google Map内部会生成一个GET request, 使用的是https。没有参数或者接口可以改成http。导致虽然加载时是用http,但是内部依然用https访问不了的情况。

解决方法:

查看Google 返回的JS, 是混淆代码,基本上找不到可以改URL的地方。

Debug这个GET request, 不是AJAX,发现是用JSONP访问。也没有调用document.write()。后来发现新增<script>是在<head>里面。拦截appendChild()。找到可以修改URL的地方。

上代码:

var heads = document.getElementsByTagName("head");
if(heads){
var head = heads[0];
if(head.appendChild && head._original_appendChild_ === undefined){
head._original_appendChild_ = head.appendChild;
head.appendChild = function(node){
if(node.nodeName == "SCRIPT" && node.src && node.src.indexOf("https://maps.googleapis.com/maps/api/js")==0){
node.src = node.src.replace(/^https:/, "http:");
}
return head._original_appendChild_(node);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐