2013-04-10 245 views
1

我有一个开源的软件包,我使用过Google Map API的SugarCRM。用户报告说Chrome浏览器存在一个错误(https加载问题)。使用https协议定义SugarCRM URL并且Maps API URL为http时会发生此问题。由于这是一个已安装的软件包,因此它可能与http或https协议一起使用;这取决于它的安装位置。Chrome浏览器:谷歌地图API JS加载问题https:

例SugarCRM的网址:

https://www.mydomain.com/index.php 

目前谷歌地图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 & Safari?

回答

2

使用协议相对URL(即//)我相信在几乎所有最新的主流浏览器(除了可能的IE6)都支持,所以我认为它是完全安全的。你可以阅读更多关于他们从保罗爱尔兰位置: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

请注意,如果你在谷歌地图API第2版,我认为你必须做这样的URL是为SSL不同,但它看起来像你在当前版本应该没问题。

我相信twitter曾经有一个类似于上面的按钮用于他们的推文按钮,但现在也使用协议相关的URL。 HTML5 Boilerplate模板也会使用,所以如果你决定使用它们,我会说你是一个很好的公司。