如何为openlayers3请求添加http标头?

时间:2015-10-02 19:07:14

标签: openlayers-3

如何将http标头注入每个地图图层请求?

在这种情况下,我需要为给定的图层和来源发送身份验证标头,但我也可能想要发送其他标头。

搜索代码和文档没有任何线索。

1 个答案:

答案 0 :(得分:6)

Answered on github.

默认情况下,图片加载的方式如下:img.src =' http://example.com/tile.png&#39 ;; - 也就是说,我们将Image的src属性设置为图像url。在这种情况下,您没有机会为请求设置标头。

您可以通过调用source.setTileLoadFunction(customLoader)来覆盖此行为。这假设您正在使用"平铺图像"资源。然后,您有责任定义自定义加载程序。将使用ol.ImageTile和字符串URL调用此函数。

剩下的由你决定。您的自定义加载程序可能如下所示:

function customLoader(tile, src) {
  var client = new XMLHttpRequest();
  client.open('GET', src);
  client.setRequestHeader('foo', 'bar');
  client.onload(function() {
    var data = 'data:image/png;base64,' + btoa(unescape(encodeURIComponent(this.responseText));
    tile.getImage().src = data;
  });
  client.send();
}