أكثر

ArcGIS JavaScript setRequestPreCallback يعمل جزئيًا؟

ArcGIS JavaScript setRequestPreCallback يعمل جزئيًا؟


لديّ واجهة برمجة تطبيقات جالسة أمام AGS تتطلب مصادقتها الخاصة. أنا أستخدم setRequestPreCallback كما هو مذكور في مستندات ESRI.

في الصورة أدناه ، يمكنك أن ترى أن أول طلبين يعودان 200. الطلب الأول هو CORS Preflight والطلب الثاني هو JS api للحصول على معلومات json من MapServer.

يستخدم الطلب الثاني الوظيفة التي قمت بتعيينها في setRequestPreCallback (...) لتعيين قيمة الرأس بشكل صحيح مع الرمز المميز. ومع ذلك ، عندما يتم طلب صورة من MapServer (عبر التصدير) ، لا يتم استدعاء الوظيفة التي أمتلكها في setRequestPreCallback ولا يتم تعيين الرمز المميز ، مما يترك لي مجموعة من 401 من الطلبات غير المصرح بها.

أنا أجري AGS 10.3 مع JS API 3.14.1

هنا هو JS الذي أستخدمه:

تتطلب (["esri / map"، 'esri / request'، 'esri / config'، "esri / layer / ArcGISDynamicMapServiceLayer"، "dojo / domReady!"]، وظيفة (Map، esriRequest، esriConfig، ArcGISDynamicMapServiceLayer) {esriConfig. defaults.io.corsEnabledServers.push ("my.url.com")؛ var map = new Map ("mapDiv"، {center: [-118، 34.5]، zoom: 8، basemap: "topo"})؛ الوظيفة myCallbackFunction (args) {if (args.url.indexOf ('my.url.com') === -1) {return args؛} args.headers = args.headers || {}؛ args.headers.token = 'token'؛ return args؛} esriRequest.setRequestPreCallback (myCallbackFunction)؛ map.addLayer (جديد ArcGISDynamicMapServiceLayer ("https://my.url.com/map/Assets_Service/MapServer")) ؛}) ؛

أيه أفكار؟


بدلاً من استخدام setRequestPreCallback ، يمكنك فقط إلحاق الرمز المميز بـ MapService ، وسيقوم JSAPI بإرساله على طول:

ArcGISDynamicMapServiceLayer الجديد ("https://my.url.com/map/Assets_Service/MapServer؟token=" + الرمز المميز) ؛


شاهد الفيديو: ArcGIS API for JavaScript