Google地图无法在https://中运行

dbu*_*ser 7 ssl https google-maps google-maps-api-3 markerclusterer

我在http上使用谷歌地图,它工作得非常好.但是当我在同一时间安装ssl证书时,它就停止了工作.它给了我错误

混合内容:" https:// url "页面是通过HTTPS加载的,但请求了一个不安全的脚本" http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/ markerclusterer.js?_ = 1***************'.此请求已被阻止; 内容必须通过HTTPS提供.

Chr*_*ook 12

更新:2016年5月,Google退出了此库的google-maps-utility-library-v3.googlecode.com来源.但是,由于Google不久前将源代码转移到了GitHub,请考虑本文末尾介绍的GitHub详细信息,特别是关于直接在项目中包含脚本和资源的最终说明

除了更改您的脚本包含URL:

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js
Run Code Online (Sandbox Code Playgroud)

至:

https://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js
Run Code Online (Sandbox Code Playgroud)

在沿着以下行实例化MarkerClusterer时,您还需要指定imagePath选项:

var mc = new MarkerClusterer(map, markers, { 
    imagePath: 'https://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/images/m' 
});
Run Code Online (Sandbox Code Playgroud)

这将避免以下警告,该警告与您突出显示的脚本错误具有相同的基础:

混合内容:" https:// url "页面是通过HTTPS加载的,但是请求了一张不安全的图片" http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/images/ m1.png '.此内容也应通过HTTPS提供.

发生这种情况的原因是,默认情况下,MarkerClusterer库使用以下非https设置作为其群集映像的根(m1.png,m2.png等):

MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ =
    'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/' +
    'images/m'
Run Code Online (Sandbox Code Playgroud)

虽然我们前一段时间遇到过这个问题,但它似乎已经解决了对库的GitHub存储库中的以下pull请求的响应:

在图像链接中将HTTP更改为HTTPS

可以使用以下脚本url 从RawGit访问此GitHub版本:

https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/src/markerclusterer.js
Run Code Online (Sandbox Code Playgroud)

并且以下imagePath可用于访问GitHub图像:

var mc = new MarkerClusterer(map, markers, { 
    imagePath: 'https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m' 
});
Run Code Online (Sandbox Code Playgroud)

虽然以上网址(带有cdn前缀)没有流量限制或限制,并且文件是通过超快速全球CDN提供的,但请记住,RawGit是免费托管服务,不提供正常运行时间或支持保证.

以下SO答案将对此进行更详细的介绍:

链接并执行GitHub上托管的外部JavaScript文件

这篇文章还包括,如果您要链接到GitHub上的文件,那么在生产中您应该考虑定位特定的发布标记,以确保您获得所需的脚本发行版本.

但是,由于js-marker-clusterer存储库的保管人尚未创建任何版本,因此目前无法实现.

因此,您应该认真考虑直接在项目中下载并包含库及其资源以用于生产目的.

  • 请注意,未能开始的原因之一是从生产应用程序直接链接到其他人的源代码控制是有风险的.由于这个原因,GitHub不支持从他们的CDN中包含JS,并且通过包含另一个间接级别(例如cdn.rawgit.com),您正在添加另一个潜在的失败点.在生产应用程序中执行此操作非常危险.请尝试在您自己的基础架构上托管您关心的内容. (2认同)

Bar*_*ada 3

如果您通过 https 访问您的网站,则其提供的所有内容也必须来自 https。其中包括图像、样式表和 JS 脚本。只需将 URL 中的 http 更改为 https 即可。