谷歌地图服务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的地方。
上代码:
@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); } } }
相关文章推荐
- 如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https。
- Android HttpUrlConnection如何使用Https连接
- 在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https
- 如何使用Dynamics CRM 2013服务模块01(案例的主题) - Service Module Guide(Subject of A Case)
- 在iOS9中,苹果将原http协议改成了https协议,使用 TLS1.2 SSL加密请求数据。如何解决报错
- 使用 gSOAP 通过 HTTP 和 HTTPS 调用由 WSAD 创建的 J2EE Web 服务
- 使用HTTPService与Asp的伪Web服务通讯,完成数据库操作
- 如何使用源码安装新版本的http服务
- 当自己写http服务的时候,路由是很重要的,我这里分享我在路由使用的时候是如何注册的
- 使用 gSOAP 通过 HTTP 和 HTTPS 调用由 WSAD 创建的 J2EE Web 服务
- 如何使用Azure Container Service Engine在Azure中国区部署容器服务(一):DC/OS篇
- 升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错
- 如何使用Azure Container Service Engine在Azure中国区部署容器服务(一):DC/OS篇
- liunx服务使用(HTTP + SSL = HTTPS)
- Flex中使用HTTPService向后发送请求,参数中如何使用URL的保留字符(问号、百分号)
- 使用 gSOAP 通过 HTTP 和 HTTPS 调用由 WSAD 创建的 J2EE Web 服务
- 如何使用NetScaler实现http页面跳转https
- 说说在Android如何使用服务(Service)的方法
- 在MB消息流中,如何使用ESQL来动态改变HTTPRequest的Web 服务URL?
- 如何在 Web 服务中使用 Service Data Objects 2.1 的动态数据 API