在js開發(fā)中經(jīng)常碰到訪問本地服務(wù)和外網(wǎng)服務(wù)的問題,這就需要跨域訪問的事情,在ArcGIS的幫助中已經(jīng)有這方面的介紹和使用配置。
https://developers.arcgis.com/javascript/jshelp/ags_proxy.html
為什么要配置跨域代理呢,有以下幾個(gè)場景需要進(jìn)行跨域配置
(1)、所訪問的資源和你的應(yīng)用不在同一個(gè)域中Cross Origin Resource Sharing (CORS)跨域資源共享(CORS)是被禁止的
(2)、應(yīng)用使用的服務(wù)是一個(gè)有著Token的安全服務(wù),不想安全密鑰Token串在網(wǎng)絡(luò)上傳輸
(3)、請求超過2048字符,一般是用一個(gè)多邊形作為輸入?yún)?shù)的時(shí)候一般都容易超過,這時(shí)候必須要代理了
那么如何配置自己的代理服務(wù)器呢?
1、獲得代理應(yīng)用資源 ?https://github.com/Esri/resource-proxy/releases ?進(jìn)入GitHub中下載Esri提供的代理應(yīng)用
解壓夠針對不同的平臺有不同的代理應(yīng)用IIS、Java(Tomcat )、PHP
2、代理部署,以IIS為例,直接將DotNet文件夾放到wwwroot目錄下即可
(1)??????IIS部署內(nèi)容
在ReadME文件中有詳細(xì)試用IIS部署和測試的內(nèi)容,首先部署到IIS根目錄,然后進(jìn)行相關(guān)測試
最后設(shè)置自己相關(guān)跨域內(nèi)容,在Proxy.config文件中配置需要代理的訪問資源,如下
在應(yīng)用程序中指向的代理路徑為
2、在你的應(yīng)用中使用代理設(shè)置
可以在程序開始時(shí)加入如下
esriConfig.defaults.io.proxyUrl= ""
esriConfig.defaults.io.alwaysUseProxy= false;
或者
urlUtils.addProxyRule({
urlPrefix:"route.arcgis.com",
proxyUrl:""
});