为防止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做到从前端完全隐藏,达到防止泄露的目的。
这篇文章对您解决问题是否有帮助?
已解决
未解决