我正在没有 root 访问权限的服务器上构建传单地图。 我想添加一个通过基本身份验证(用户名和密码)保护的 WMS 服务。 传单中有一个简单的方法,使用 L.tileLayer.wms 添加 WMS 服务,但这不适用于安全的 WMS 服务。那么有没有一种方法可以在 WMS 服务器上进行身份验证并接收 WMS 图块并将其解析为传单?将登录凭据添加到 WMS URL(例如 https://用户名:[电子邮件受保护])对我不起作用。
使用基本身份验证时,您将标头中的用户名和密码传递给服务器:
Authorization: Basic <credentials>
<credentials>
是 Base64 编码的用户名和密码,由单个冒号连接 :
。
您可以使用 leaflet-wms-header 传递自定义标头。不幸的是,我手头没有任何带有基本身份验证的 WMS 服务器用于测试,但这里是一个基于 leaflet-wms-header 提供的示例的示例:
// untested code
var wmsLayer = L.TileLayer.wmsHeader(
'https://GEOSERVER_PATH/geoserver/wms?',
{
layers: 'YOUR_LAYER',
format: 'image/png',
transparent: true,
},
[
{
header: 'Authorization',
value: `Basic ${btoa(username + ':' + password)}`
},
],
null
).addTo(map);
btoa
将给定字符串编码为Base64编码字符串。)