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

标签 reactjs authorization arcgis esri arcgis-js-api

我正在尝试在我的 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/

相关文章:

javascript - 如何在 PHP 和 Javascript 之间隐藏我的 API key ?

javascript - 从子组件中处于状态的数组中删除项目

c# - Asp.Net 核心 : Access custom AuthorizeAttribute property in AuthorizeHandler

python - SWITCH_SELECTION 不适用于 SelectLayerByLocation_management

c# - 为什么使用 ArcGIS 9.3 对象编写的程序在升级到 ArcGIS 10 后不再运行?

gis - 老虎普查数据中的Shape_area和ALAND AWATER

javascript - React useSelector 先返回 undefined,再返回 object

reactjs - 如何在axios中取消/中止ajax请求

http - 为什么 HTTP 身份验证的 header 称为 "Authorization"而不是 "Authentication"

node.js - 将 NodeJS Rest 服务与 wso2 集成