如何使用HTTPS调用HERE Maps API v3

8

我该如何通过HTTPS调用HERE地图?

我的服务器使用HTTPS,所以当我调用以下内容时:

    <script src="http://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
    <script src="http://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>

由于"混合内容",浏览器阻止了请求,因此地图未显示...

我尝试将脚本源中的"http"更改为"https",但是我遇到了相同的问题,因为两个javascript代码中都有"http"调用。

顺便说一下,后端是用Grails编写的,通道使用Spring Security Core插件进行安全保护。

2个回答

20

您需要从https加载API,此外还需要设置:

// Create a platform object to communicate with the HERE REST APIs
var platform = new H.service.Platform({
    useCIT: true,
    app_id: app_id,
    app_code: app_code,
    useHTTPS: true
});

诀窍是使用 useHTTPS: true,如文档中所述:HERE 开发者指南


3

关于HTTPS:

  • 通过"https协议"加载js和css文件
  • 在创建H.service.Platform实例时强制使用HTTPS

对于"HTTPS协议",在头部区域加载CSS:

<link rel="stylesheet" type="text/css" href="https://js.api.here.com/v3/3.0/mapsjs-ui.css" />

对于“https协议”,在关闭BODY标签之前加载JS:
<script src="https://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-ui.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-mapevents.js"></script>

按照这些步骤,所有JS和CSS都可以正确加载。但是当SDK加载图块时,您可能会遇到一些问题。为了允许SDK在HTTPS协议中正确加载所有必需的资产,您需要在Platform构造函数中使用'useHTTPS'选项:

this.platform = new H.service.Platform({
  'app_id': process.env.VUE_APP_HERE_APP_ID,
  'app_code': process.env.VUE_APP_HERE_APP_CODE,
  'useHTTPS': true
})

更新:使用3.1版本后,HTTPS协议没有任何问题。


相对协议现在被视为一种反模式,并且如果支持,您应该始终使用https。 - ctrlw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接