我正在尝试在我的 React 应用程序中实现一个 MapLayer。该 map 只能通过需要身份验证的代理访问,以识别每个请求的每个端的用户。
为了提供 token ,我添加了以下请求拦截器,以确保访问该后端的所有调用都将通过授权进行扩展。如果我这样做,则请求中不会添加 header 。
esriConfig.request.interceptors.push({
urls: ['backend/api/*'],
before: async function (params: any) {
params.requestOptions.headers = {
Authorization: 'Bearer ' + token),
};
},
});
如果我删除 urls 参数以便所有路由都使用 token 扩展,我将收到一些 cors 错误,因为 esri 包还会对另一个 api 进行一些调用,在那里我被阻止,因为我发送了一个意外的授权 header 。其他接口(interface):
https://www.arcgis.com/sharing/rest/portals/self?f=json&culture=de-de
我如何确保只有对我的 api 的请求才会使用自动化 header 进行扩展?
最佳答案
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/,
关于reactjs - 基于通配符路由的 Esri-arcgis 请求拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65106920/