为防止key于前端中暴露,增强安全性,GL提供代理服务转发方案,以在前端完全隐藏您的key,不被他人所盗用。

操作并不复杂,只需您有自己的服务器,将申请的key存储在服务器端,于服务器端中配置 JS API 中与key相关的请求 URL,前端再稍做设置即可完成此套防泄露措施。操作流程如下:

1.服务器配置代理

此处以Nginx反向代理为例,分别对与key相关的请求进行代理服务的配置。配置参考如下(您需要将「XXXX-XXXX-XXXX-XXXX-XXXX-XXXX」替换为您申请的key):

server {
      listen 8080;           # 端口设置,可根据实际端口调整
      server_name 127.0.0.1; # server_name 您的服务器ip、域名,可根据实际情况添加或修改
	
    location /_TMapService { 
        set $args "$args&key=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"; # 此处填写您的key
        proxy_pass https://pr.map.qq.com/pingd?appid=jsapi_v3;
    }

    location /_TMapService/checkKey {
        set $args "$args&key=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"; # 此处填写您的key
        proxy_pass https://apikey.map.qq.com/mkey/index.php/mkey/check;
    }

    location /_TMapService/oversea {
        set $args "$args&apikey=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"; # 此处填写您的key
        proxy_pass https://overseactrl.map.qq.com;
    }

    location /_TMapService/service {
        set $args "$args&key=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"; # 此处填写您的key
        proxy_pass https://apis.map.qq.com/ws;
    }
}

2.前端配置代理服务器地址

于前端页面代码中配置您的服务器地址,写法参考如下:

<!-- 配置您的代理服务器地址(该部分需要写在JS API引入之前) -->
<script type="text/javascript">
    window._TMapSecurityConfig = {
      serviceHost: "您代理服务器的域名或地址/_TMapService",
      // 例如 :serviceHost:'http://127.0.0.1:8080/_TMapService',
    };
</script>
<!-- 引入JS API, 链接中不带'&key=XXXX-XXXX-XXXX-XXXX'的参数 -->
<script src="https://map.qq.com/api/gljs?v=1.exp"></script>

至此,前端请求API的链接及API文件中将不会带有key;网络监控中请求服务链接也不再包含带有key参数字段。key做到从前端完全隐藏,达到防止泄露的目的。

这篇文章对您解决问题是否有帮助?

已解决
未解决