基于通配符路由的esri-arcgis请求拦截

Posted

技术标签:

【中文标题】基于通配符路由的esri-arcgis请求拦截【英文标题】:Esri-arcgis request intercept based on wildcard route 【发布时间】: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' 才能捕获它。顺便说一句,我认为您不需要* 【参考方案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/,

【讨论】:

以上是关于基于通配符路由的esri-arcgis请求拦截的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Ktor 中指定通配符路由?

使用通配符的 Undertow 路由格式

Spring Security通配符路由绕过漏洞(CVE-2023-20860)

nodejs路由的部分通配

cas有些请求路径不需要单点登录过滤器拦截

思科路由器ACL通配符