OpenLayers 3 的基本身份验证

Basic auth with OpenLayers 3

我在桌面应用程序中嵌入了 OpenLayers,我正在尝试从需要身份验证的服务器请求 WMS 地图图层。

由于环境的原因,我无法让浏览器通常会显示要求身份验证的弹出窗口,而且客户无论如何也不会接受。

现在我想使用 https://{username}:{password}@domain.com/wms?

的格式

如果我将其作为 ol.source.TileWMS 的 url 传递给 OpenLayers,请求会删除用户名和密码,我总是看到返回 401 错误并查看 url用户名和密码已被剥离。

您可以尝试使用 tileUrlFunction 创建图层。

var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
  if (!tileCoord) { return ""; }

  var x = tileCoord[1];
  var y = tileCoord[2];
  var z = tileCoord[0];

  return 'https://{username}:{password}@localhost/map-tiles/' + z + '/' + x + '/' + y + '.png';
}

var layers = [
  new ol.layer.Tile({
    source: new ol.source.XYZ({
      tileUrlFunction: tileUrlFunction
    })
  })
];

编辑:在 URL 中使用嵌入式“用户:密码”身份验证已被 RFC 3986 弃用,因此这将不再适用于现代浏览器。