适用版本:ElaneMap H5 API 3.5
前置阅读:7.1-快速入门
适用读者:所有开发接入人员(上线前必读)
map.yourcompany.com),可同时绑定测试域名;localhost,生产密钥绑定正式域名;这是最基础、成本最低且最有效的一道防线。即使后续方案都不做,这一条也必须落实。
.env、.env.production 等环境文件,并将 .env.local 加入 .gitignore;注意:此方案只解决"密钥不进代码仓库"的问题。密钥下发到浏览器后仍可被该用户本人看到,因此必须与方案一(域名绑定)配合使用。
浏览器 ──(不含密钥)──> 自家后端 /proxy/xxx ──(带密钥)──> 船讯网数据接口
<────── 返回数据 ────── 自家后端 <────── 返回数据 ──────说明:纯 Nginx 在"按条件追加 query 参数"上能力有限,复杂注入建议用 Nginx+Lua(OpenResty)或上面的 Node/Java 应用层代理实现。
| 内容 | 是否适合后端代理 | 说明 |
|---|---|---|
| 船位/轨迹/气象等 JSON 数据接口 | 适合 | 请求量可控,可加缓存,收益最大 |
API 主 JS 文件(?k=) | 不适合 | 属于静态库加载,且地图初始化的 ak 参数在前端不可避免 |
| 海图瓦片(tile.c 等) | 不建议 | 瓦片请求量大,代理会显著增加带宽成本与延迟,建议依靠域名绑定防护 |
ak 参数在前端无法隐藏,怎么办?ak 必须在前端传给 ShipxyAPI.Map,这是该版本 API 的机制。因此防护重心放在"域名绑定"上——密钥离开授权域名即失效,明文可见但不影响安全。