我已经为SugarCRM开发了一个使用Google Map API的开源软件包。用户已报告Chrome浏览器存在错误(https加载问题)。使用https协议定义SugarCRM URL并且Maps API URL为http时,会出现此问题。因为这是一个已安装的软件包,所以它可以与http或https协议一起使用;这取决于它的安装位置。
SugarCRM网址示例:
https://www.mydomain.com/index.php
当前的Google Maps API调用:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
我正在考虑将其更改为https,但这会解决问题吗?我应该写一些逻辑来检查网站的URL(来自SugarCRM配置)http或https并使其匹配协议?那些其他外部JS文件如jquery呢?
另外,我见过人们使用//应该让浏览器决定协议?这与所有最新的浏览器兼容;例如Firefox,IE,Chrome&amp;的Safari?
答案 0 :(得分:2)
使用协议相对URL(即//)我认为几乎所有主流浏览器都支持(IE6除外),所以我认为它非常安全。您可以在这里阅读Paul Irish的更多相关信息:http://paulirish.com/2010/the-protocol-relative-url/
如果你确实想自己做一个检查,这是一个相当简单的javascript检查,类似这样但显然对于地图而不是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,我认为您必须这样做,因为sll的网址不同,但看起来您使用的是当前版本,所以应该没问题。
我认为推特过去常常像上面的推文一样检查他们的推文按钮,但现在也使用协议相对网址。 HTML5 Boilerplate模板也会使用,所以如果您决定使用它们,我会说您的情况很好。