序言:我正在嘗試將一個圖層拉入我的 arcgis-js-api 應用程序中,但我遇到了困難。該層在這里:https://maps.disasters.nasa.gov/ags04/rest/services/ca_fires_202008/sentinel2/MapServer我正在嘗試以這種方式添加它:export const SC2Sept29 = new MapImageLayer({
url:
'https://maps.disasters.nasa.gov/ags04/rest/services/ca_fires_202008/sentinel2/MapServer/547',
});運行我的應用程序時,我收到經典的 CORS 錯誤從源“https://cdpn.io”獲取“https://maps.disasters.nasa.gov/ags04/rest/services/ca_fires_202008/sentinel2/MapServer?f=json”的訪問已被 CORS 策略阻止:請求的資源上不存在“Access-Control-Allow-Origin”標頭。如果不透明響應滿足您的需求,請將請求模式設置為“no-cors”以在禁用 CORS 的情況下獲取資源。這是來自此 codepen ,但使用vscode live server或 webpack-dev-server進行本地開發時也會發生同樣的情況。其他圖層不會發生這種情況,僅來自maps.disasters.nasa.gov 服務器上的圖層會發生這種情況。嘗試設置代理當我嘗試訪問 NASA 層時,我從線程 CORS 錯誤中得到了一些建議,我需要為來自該服務器的任何內容設置代理。他們的建議是按照這些說明設置代理,并使用 arcgis 的現成代理之一。就我個人而言,我發現缺少代理存儲庫的說明。我設置服務器端應用程序的所有經驗都是使用 Nodejs,但我不理解如何執行此操作的說明。我現在鏈接的 codepen 嘗試在任何地方使用 CORS 代理,但將其設置在esr/core/urlUtils:urlUtils.addProxyRule({ urlPrefix: 'maps.disasters.nasa.gov', proxyUrl: 'https://cors-anywhere.herokuapp.com',});但這給出了一個錯誤,指出Unexpected token T in JSON at position 0. 我可以在網絡選項卡中看到瀏覽器確實正在嘗試訪問正確的層 URL,并正確地以 cors Anywhere 代理 URL 為前綴。但響應本身只是 cors Anywhere 代理的文本,因此出現錯誤:正如我提到的,我的開發環境是 vscode live 服務器和 webpack 開發服務器,具體取決于我構建的應用程序的哪個部分。我的目標生產環境是 github 頁面 - 我真的沒想到這個應用程序需要后端。如果我需要服務器端來提供代理,我可以將其作為完整堆棧應用程序托管在 Heroku 甚至 AWS 上。當嘗試使用預先提供的 arcgis 代理時,我遇到了同樣的問題。例如,我將他們的代理存儲庫克隆到我的目錄中:當配置urlUtils為引用這些代理之一時,它會這樣做,但只返回代理文件的文本內容并給出錯誤Unexpected token T in JSON at position 0。esri 論壇上有很多關于 IIS 的討論,但我是一名 Mac 用戶,對此沒有任何經驗。Esri 提供 .NET、java 或 PHP 代理,但我沒有這方面的經驗。我怎樣才能擺脫這些 cors 錯誤并正確地將層從 nasa 服務器拉到我的應用程序中。如果我需要代理,如何設置一個既適用于我的開發環境又適用于生產環境的代理?我很難找到適合我這種情況的教程。謝謝閱讀。
設置代理來處理 arcgis js api 的 CORS
有只小跳蛙
2023-09-07 17:07:40
