如何在 mapbox-gl-js 中为源指定授权标头?

Posted

技术标签:

【中文标题】如何在 mapbox-gl-js 中为源指定授权标头?【英文标题】:How to specify Authorization Header for a source in mapbox-gl-js? 【发布时间】:2017-04-17 20:59:54 【问题描述】:

如何使用 mapbox-gl-js 为 wms 源设置请求标头?我需要所有平铺请求来添加一个如下所示的标题:

Authorization: "Bearer base64-encoded-token"

WMS example、map#addSource 和 map#addLayer 让我相信无法设置磁贴请求标头。

【问题讨论】:

这里有同样的问题,但使用矢量平铺源。您找到添加此标头的方法了吗? 我用的是OpenLayers-3,没有问题。 【参考方案1】:

您现在可以使用transformRequest 选项添加自定义标头:

在 Map 请求外部 URL 之前运行回调。回调可用于修改 url、设置标头或设置跨域请求的凭据属性。预期返回具有url 属性和可选headerscredentials 属性的对象。

例子:

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 
      
    
  
);

【讨论】:

Steve Bennett 和 ThunderDev,这仍然适用于当前的 GL JS 版本吗?我正在向服务器发送授权,但我的地图未授权。 Mapbox 的 api 文档仍然提到了这个选项以及一个类似的例子,所以是的,我相信它应该仍然适用于当前版本。您的身份验证令牌可能有问题。 感谢您的帮助。

以上是关于如何在 mapbox-gl-js 中为源指定授权标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring sec 中为组使用属性:hasAnyRole 的授权标签

如何使用Jersey在REST Web服务中为服务类指定多个包名称

如何在Mapbox GL JS动画中为LineString分段着色不同

如何在 mapbox-gl-js 中以某些缩放级别隐藏点标签?

如何在 mapbox-gl-js 的标记上添加“点击”侦听器

如何使用标志在 Drupal 视图中为节点提供特定的放置顺序