Chrome浏览器:谷歌地图API JS加载问题https:
我有一个开源的软件包,我使用过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?
使用协议相对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模板也会使用,所以如果你决定使用它们,我会说你是一个很好的公司。