Google地图在SSL上的选项

20
我们最近发现谷歌地图API与SSL不兼容。虽然可以理解,但其他人如何有效地克服这个问题呢?

Maps API能在SSL(HTTPS)下工作吗?

目前,Maps API还不能通过安全(SSL)连接使用。如果您在安全站点上运行Maps API,则浏览器可能会警告用户屏幕上存在不安全的对象。

我们已经考虑了以下选项:
  1. 将页面拆分,以便信用卡收集(SSL要求)不在同一页面上与Google地图出现。
  2. 切换到另一个地图提供商,如Virtual Earth。有传言称他们支持SSL。
  3. 使用IFRAME进行技巧操作。听起来有些笨拙。
  4. 代理对谷歌的调用。听起来很繁琐。
还有其他选项吗?或者有没有人对我们所考虑的选项有深入的见解?

Google Maps API Premier每年需要花费您10K。对此问题发表评论!我们一起或许能够说服谷歌:http://code.google.com/p/gmaps-api-issues/issues/detail?id=591 - fabian
2
嗨Brad。是时候接受https://dev59.com/WnVD5IYBdhLWcg3wXaYd#5337403了吗?谷歌地图现在免费支持SSL。 - Markus Olsson
谷歌最近推出了用于安全网站的地图API: 所有人现在都可以使用SSL加密的Maps API - mah2602
“Google Maps现在已经免费支持SSL”,那么使用Map API V2进行SSL连接的Android应用程序是否也能从这个消息中获益? - Parth Kapoor
7个回答

15

我同意前两个答案,在这种情况下,从可用性的角度来看,将两个功能分开成不同的屏幕可能会更好。你真的希望你的用户专注于输入完整准确的信用卡信息,而在同一个屏幕上放置地图可能会分散注意力。

但是,值得一提的是,Virtual Earth 当然完全支持 SSL。要启用它,您只需将脚本引用从 http:// 改为 https://,并在 URL 后附加 &s=1,例如:

<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1" type="text/javascript"></script>

变成

<script src="https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1&s=1" type="text/javascript"></script>

他们的SSL证书无效,同时还使用了混合内容。 - dr. evil

8

看起来运行得很好!文档:http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/basics.html#HTTPS - Markus Olsson

5
这似乎是一个业务需求/可用性问题 - 你是否有把地图放在信用卡页面上的充分理由?如果有,也许值得解决一些技术问题。
你可以尝试使用Mapstraction,这样你就可以切换到支持SSL的提供商,并在Google未来支持时切换回来。

3
如果您是Google Maps API Premier客户,则支持SSL。我们使用它并且效果很好。
在Google提供SSL之前,我们代理了所有流量,这种方法仍然可行。但您会失去使用Google CDN的优势,并且由于看起来会产生大量流量,您的IP可能会被禁止访问。

Google Maps Premier非常适合大型公司,他们可以轻松支付1万美元的高昂费用。如果像我这样,你可能会感到有些运气不好。 - baudtack

3
我会选择您的第一个解决方案。这使用户可以专注于输入他们的信用卡详细信息。然后,您可以将他们转移到另一个网页,询问或提供与Google地图相关的进一步信息。

1

如果在显示Google地图时,在IE 9上收到安全警报,请使用

<script src="https://maps.google.com/maps?file=api&v=2&hl=en&tab=wl&z=6&sensor=true&key=<?php echo $key;?>
" type="text/javascript"></script>

替代

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE"
  type="text/javascript"></script>

4
这里不赞成推广个人博客的链接。相反,我已经将你博客文章的内容放在了你的回答中。请今后这样做来回答问题。 - Brad Larson

0

我刚刚删除了HTTP协议,它起作用了!

从这个开始:

<script src="http://maps.google.com/maps/api/js?sensor=true" type="text/javascript"></script>

变成这样:

<script src="//maps.google.com/maps/api/js?sensor=true" type="text/javascript"></script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接