我在桌面应用程序中嵌入了OpenLayers,我正在尝试从需要身份验证的服务器请求WMS地图图层。
由于环境原因,我无法使用浏览器通常显示的弹出窗口来要求身份验证,而且无论如何客户都无法接受。
目前我想使用https:// {username}:{password} @ domain.com / wms?
的格式如果我将其传递给OpenLayers作为ol.source.TileWMS的url,请求会删除用户名和密码,并且我总是会看到401错误,并且查看了用户名和密码已被删除的URL。
答案 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已弃用在网址中使用嵌入式“用户:密码”身份验证,因此现在不再适用于现代浏览器。