arcgis server 服务token安全验证的proxy代理配置与使用,以java为例

在WebGIS实际开发过程中,有时候我们会需要访问他人提供的加了token安全验证的arcgis server服务,直接引用server的地址是不行的需要登录,如下:

arcgis server 服务token安全验证的proxy代理配置与使用,以java为例

 这时,我们需要一个代理来帮助我们不弹出这个登录提示,当然这个前提需要arcgis server端提供一个可访问服务的用户名和密码,可以从https://github.com/Esri/resource-proxy/releases下载代理页面:

arcgis server 服务token安全验证的proxy代理配置与使用,以java为例

 下载解压后有三个版本的页面(DotNet、Java、PHP),我们这里以java的为例,将Java文件夹下的proxy.jsp复制到javaWeb项目的WebRoot路径下,再将Java\WEB-INF\classes内的proxy.config文件复制到javaWeb项目的src下,并更改proxy.config文件如下:

arcgis server 服务token安全验证的proxy代理配置与使用,以java为例

其中<serverUrl/>内的参数说明:

url:需要token验证的服务的rest地址,改地址下你可能需要访问多个服务,所以rest地址知道services即可;

matchAll:默认为true;

host:需要token验证的服务的IP;

username:用户名;

password:密码;

设置好后在浏览器输入http://项目IP:端口/项目名/proxy.jsp?ping可以测试下代理是否可用,返回

                       { "ProxyVersion": "1.1.0", "Configuration File":"OK", "Log File": "OK"}

然后再访问:http:// IP:端口/项目名/proxy.jsp?http://GIS服务IP:端口/arcgis/rest/services/?f=pjson,如果看到指定Arcgis Server目录下的json数据,则代理配置成功。

配置成功后就可以在项目中使用了,在项目中使用需要在访问服务前加上:

          esri.config.defaults.io.proxyUrl= "http://项目IP:端口/项目名/proxy.jsp";
          esri.config.defaults.io.alwaysUseProxy= true;

或者:

          esri.urlUtils.addProxyRule({

              urlPrefix:"http://GIS服务IP:端口/arcgis/rest/services",//可以是具体的rest服务地址

              proxyUrl:"http://localhost:8080/hgs_test/proxy.jsp"

           });

如果只是某个服务需要token可考虑第二种,直接urlPrefix设置具体的rest地址。到此proxy代理配置就结束啦,可以访问设置了token验证的服务了。

arcgis server 服务token安全验证的proxy代理配置与使用,以java为例