OpenLayers 3的基本身份验证

时间:2016-04-19 13:37:57

标签: openlayers-3

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

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

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

的格式

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

1 个答案:

答案 0 :(得分:0)

您可以尝试使用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
    })
  })
];

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