Arcgis API for Javascript筆記 -- Step1搭建代理伺服器
阿新 • • 發佈:2019-02-13
前言
arcgis提供了許多圖層服務供學習使用,這樣節省了我們很多時間,將更多精力關注到arcgis for javascript api的學習之中。但由於這些服務大多是需要身份驗證的服務,如果直接拿來使用的話,每次訪問該服務都需要填寫使用者名稱和密碼進行登入。為了一勞永逸的節省下這部分時間,我們需要搭建一個代理伺服器。幸運的是arcgis同時提供了各種語言的代理伺服器原始碼。下面我講逐步演示搭建代理伺服器的過程。
1.安裝代理伺服器原始碼
代理伺服器原始碼地址:https://github.com/Esri/resource-proxy.git
使用github desktop客戶端或直接下載壓縮包解壓。由於我只會Java語言,所以以Java語言舉例。原始碼目錄結構如下:
在Java目錄下是一個完整的JavaEE專案。修改proxy.config後放入tomcat的webapp目錄下即可。由於我經常需要修改proxy.config檔案。所以選擇以新建專案方式新增到eclipse當中。
1.在eclipse中新建Dynamic Web Project命名為arcgisproxy。
2.將下載的原始碼中Java資料夾下內容倒入到WebContent中。完成後目錄結構如下
2.修改代理伺服器配置
1.訪問arcgis官網https://accounts.esri.com/註冊賬號。
2.在serverUrls節點中每個服務地址配置一個serverUrl
<?xml version="1.0" encoding="utf-8" ?>
<ProxyConfig allowedReferers="*"
logFile="proxy_log.log"
logLevel="INFO"
mustMatch="true">
<serverUrls>
<serverUrl url="http://services.arcgisonline.com" matchAll="true"/>
<!-- 下面填寫需要代理的連結 -->
<serverUrl
<!-- 連結地址 -->
url="https://livefeeds.arcgis.com/arcgis/rest/services"
<!-- 申請Token的地址,固定不應修改 -->
tokenServiceUri="https://www.arcgis.com/sharing/generateToken"
<!-- arcgis賬號的使用者名稱 -->
username="XXX"
<!-- arcgis賬號的密碼 -->
password="XXX"
<!-- 是否匹配所有連結。設定為true則所有前半部分與url匹配的連結都將被代理 -->
matchAll="true"/>
</serverUrls>
</ProxyConfig>
<!-- See https://github.com/Esri/resource-proxy for more information -->
3.釋出代理伺服器並測試
4.在專案中啟用代理
在專案中增加全域性代理。將下列程式碼新增到專案頭部
esriConfig.defaults.io.proxyUrl = "/arcgisproxy/proxy.jsp";
esriConfig.defaults.io.alwaysUseProxy = true;
如果僅個別服務地址需要代理也可使用下列形式
urlUtils.addProxyRule({
urlPrefix:"route.arcgis.com",
proxyUrl:"/arcgisproxy/proxy.jsp"
});