Как указать заголовок авторизации для источника в mapbox-gl-js?

Как установить заголовок запроса для источника wms с помощью mapbox-gl-js? Мне нужны все запросы плитки, чтобы добавить заголовок, который выглядит так:

Authorization: "Bearer base64-encoded-token"

Пример WMS, map # addSource и map # addLayer заставляет меня поверить, что невозможно установить заголовки запроса плитки.


person Pete    schedule 02.12.2016    source источник
comment
Здесь та же проблема, но с источником векторной плитки. Вы нашли способ добавить этот заголовок?   -  person mofoyoda    schedule 10.07.2017
comment
Я использую OpenLayers-3, и это не проблема.   -  person Pete    schedule 11.07.2017


Ответы (1)


Теперь вы можете использовать параметр transformRequest, чтобы добавить настраиваемый заголовок:

Обратный вызов выполняется до того, как Map запросит внешний URL-адрес. Обратный вызов может использоваться для изменения URL-адреса, установки заголовков или установки свойства учетных данных для запросов из разных источников. Ожидается возврат объекта со свойством url и, необязательно, со свойствами headers и credentials.

Пример:

const map = new mapboxgl.Map({
  container: 'map',
  center: [2.35, 48.86],
  zoom: 13,
  transformRequest: (url, resourceType) => {
    if (resourceType === 'Source' && url.startsWith('http://myHost')) {
      return {
        url: url,
        headers: { 'Authorization': 'Bearer ' + yourAuthToken }
      }
    }
  }
});
person ThunderDev    schedule 10.12.2017
comment
Стив Беннет и ThunderDev, работает ли это с текущим выпуском GL JS? Я отправляю авторизацию на сервер, но моя карта не авторизует. - person Devil's Dream; 12.10.2019
comment
В документации по API Mapbox все еще упоминается этот параметр вместе с аналогичным примером, так что да, я считаю, что он должен работать с текущим выпуском. У вас может быть проблема с вашим токеном авторизации. - person ThunderDev; 14.10.2019