基于通配符路由的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请求拦截的主要内容,如果未能解决你的问题,请参考以下文章