首页 > 解决方案 > 基于通配符路由的esri-arcgis请求拦截

问题描述

我正在尝试在我的反应应用程序中实现 MapLayer。该地图只能通过代理访问,该代理需要身份验证来识别每个请求的每一端的用户。

为了提供令牌,我添加了以下请求拦截器,以确保访问该后端的所有调用都将被授权扩展。如果我这样做,则不会向请求中添加标头。

esriConfig.request.interceptors.push({
  urls: ['backend/api/*'],
  before: async function (params: any) {
    params.requestOptions.headers = {
      Authorization: 'Bearer ' + token),
    };
  },
});

如果我删除 urls 参数以便使用令牌扩展所有路由,我会收到一些 cors 错误,因为 esri 包还会对另一个我被阻止的 api 进行一些调用,因为我正在发送一个不期望的授权标头。

其他api: https ://www.arcgis.com/sharing/rest/portals/self?f=json&culture=de-de

我如何确保只有对我的 api 的请求将使用自动标头进行扩展?

标签: reactjsauthorizationarcgisesriarcgis-js-api

解决方案


urls 属性采用 String 或 RegExp 或它们的数组。请参阅https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#RequestInterceptor

您将 url 指定为字符串(不是正确的 RegEx)。你需要改变

urls: ['backend/api/*'],

urls: [/backend\/api/],

或(没有数组)

urls: /backend\/api/,

推荐阅读