Openlayers 3 使用OpenLayers 3进行基本身份验证

Openlayers 3 使用OpenLayers 3进行基本身份验证,openlayers-3,Openlayers 3,我在桌面应用程序中嵌入了OpenLayers,我正试图从需要身份验证的服务器请求WMS映射层 由于环境的原因,我不能使用浏览器通常显示的弹出窗口来要求身份验证,而且客户无论如何也不会接受 现在我想使用https://{username}:{password}@domain.com/wms的格式 如果我将其作为ol.source.TileWMS的url传递给OpenLayers,则请求中的用户名和密码将被删除,并且我始终会看到401个错误返回,查看url时,用户名和密码已被删除。您可以尝试使用 编

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

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

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


如果我将其作为ol.source.TileWMS的url传递给OpenLayers,则请求中的用户名和密码将被删除,并且我始终会看到401个错误返回,查看url时,用户名和密码已被删除。

您可以尝试使用


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

您可以尝试使用


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

您可以使用jquery发出请求吗?您可以使用jquery发出请求吗?我发现许多浏览器会阻止此请求,因为URL中的身份验证凭据已被弃用。谢谢,我没有意识到。不客气!这很痛苦,但有道理。请考虑使用HTTP报头。我发现许多浏览器会因为URL中的身份验证凭据而阻止这个请求。谢谢,我不知道。欢迎您!这很痛苦,但有道理。也许可以考虑使用HTTP报头。
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
    })
  })
];