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

谷歌地图服务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);
			}
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值