我有一个开源包,我曾为使用 Google Map API 的 SugarCRM 开发它。用户报告说 Chrome 浏览器存在错误(https 加载问题)。当使用 https 协议(protocol)定义 SugarCRM URL 并且 Maps API URL 为 http 时,会出现问题。因为这是一个安装包,所以它可能与 http 或 https 协议(protocol)一起使用;这取决于它的安装位置。
SugarCRM 网址示例:
https://www.mydomain.com/index.php
当前的 Google map API 调用:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
我正在考虑将其简单地更改为 https,但这会解决问题吗?我是否应该编写一些逻辑来检查站点的 URL(来自 SugarCRM 配置)的 http 或 https 并使其匹配协议(protocol)?其他外部 JS 文件(例如 jquery)呢?
此外,我看到有人使用//这应该让浏览器决定协议(protocol)?与所有最新的浏览器兼容吗?例如 Firefox、IE、Chrome 和 Safari?
最佳答案
我相信几乎所有最新的主流浏览器(可能 IE6 除外)都支持使用协议(protocol)相关 URL(即//),所以我认为它是绝对安全的。您可以在这里从 Paul Irish 那里阅读更多关于它们的信息:http://paulirish.com/2010/the-protocol-relative-url/
如果你确实想自己做检查,这是一个相当简单的 javascript 检查,类似这样但显然是针对 map 而不是 ga:
ga.src = ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
(在这里找到:http://mathiasbynens.be/notes/async-analytics-snippet#protocol-check)
请注意,如果您使用的是 google maps API v2,我认为您必须这样做,因为 ssl 的 url 不同,但看起来您使用的是当前版本,所以应该没问题。
我相信 twitter 曾经对他们的 tweet 按钮进行过类似上面的检查,但现在也使用协议(protocol)相关 url。 HTML5 Boilerplate模板也使用 then,所以如果您决定使用它们,我会说您的公司很好。
关于php - Chrome : Google Maps API JS Loading Issue with https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938463/