亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

設置代理來處理 arcgis js api 的 CORS

設置代理來處理 arcgis js api 的 CORS

有只小跳蛙 2023-09-07 17:07:40
序言:我正在嘗試將一個圖層拉入我的 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 服務器拉到我的應用程序中。如果我需要代理,如何設置一個既適用于我的開發環境又適用于生產環境的代理?我很難找到適合我這種情況的教程。謝謝閱讀。
查看完整描述

1 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

好吧,我想現在我們可以總結一下了。

為了使其工作,您需要設置代理。就像你提到的,ESRI 提供了一些不同技術的實現。

我分叉了他們的存儲庫,以便包含使用 docker 和 docker-compose 的簡單測試設置。資源代理分叉

克隆運行后,

sudo?docker-compose?-f?docker-compose.php.yml?up?-d?--build

測試代理,

http://localhost:8082/proxy?ping

nasa-service.html在它們中,您還可以找到顯示應用程序和代理的正確配置的示例(全部位于 PHP 文件夾中)。

只需要跑http://localhost:8082/nasa-service.html。

這里的關鍵是應用程序需要與代理位于同一源。


查看完整回答
反對 回復 2023-09-07
  • 1 回答
  • 0 關注
  • 265 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號