【问题标题】:Esri-arcgis request intercept based on wildcard route基于通配符路由的esri-arcgis请求拦截
【发布时间】:2021-03-14 08:15:00
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 我认为你的正则表达式有错误,你需要像这样对栏进行转义,'backend\/api' 才能捕获它。顺便说一句,我认为您不需要*

标签: reactjs authorization arcgis esri arcgis-js-api


【解决方案1】:

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/,

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 2011-07-15
    • 1970-01-01
    • 2015-03-24
    • 2015-10-11
    • 2015-01-02
    • 2016-03-20
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多