(十五)ArcGIS JS 跨域代理proxy的配置

为什么要使用代理proxy?

    未配置代理时server发送请求是用get的方式,请求跨域访问或者URL长度超过浏览器限制时,这就需要一个代理文件proxy来转发请求。
    Arcgis Server 10.0 由于不支持CORS,需要配置代理才能在前端js 程序中范围进行操作,而有时候未配置代理也未出错,例如:用extent进行空间查询 后不报错是因为选择extent 请求的参数字符串较短。
    jsapi 可以通过jsonp方法绕过跨域限制,但是一旦前端参数较多,例如用circle进行空间查询,可以就无法通过jsonp跨域,这个时候如果要使用 10.0的 Identify task 就必须配置代理;还有Arcgis Server 10.2的打印功能可能也需要配置代理才行。

下载地址

    https://github.com/Esri/resource-proxy/releases
    注意: 不同版本的Arcgis Server应下载对应版本的proxy文件,而该页面中的V1.1.0版本其实是支持10.2和10.3版本的,V1.0版本支持10.2版本以下版本,下载后解压可以看到有3中类型:DotNet、Java、PHP的代理proxy文件,此处以Java为例。

修改文件:

    V1.1.0版本
        该文件下载下来后需要修改proxy.jsp内容,全局搜索“<>”将对应的类型写入,例如:文件中有HashMap<>,未写类型,可能就需要修改为HashMap<String,String>;
        还需要修改文件“WEB-INF/classes/proxy.config”文件中的“serverUrl”标签的url属性,修改为要调用Arcgis Server的地址
        例如:“http://192.168.202.143:9797/arcgis/rest/services” (精确到service目录层级)
        (备注:若有多个不同域的服务地址,则需配置多个不同域的服务地址)
在这里插入图片描述

    V1.0版本:不需要修改proxy.jsp内容,但该版本也需要修改 “WEB-INF/Classes/proxy.config”文件,修改同V1.1.0版本一致。

部署

    修改完成后,将“Java"整个文件拷贝到Tomcat的webapps文件下,启动Tomcat。

    测试是否成功
    http:// 10.10.60.201:8801/Java/proxy.jsp?http://10.10.70.176:6080/arcgis/rest/services/?f=pjson,
    如果看到指定Arcgis Server目录下的json数据,如

{"currentVersion":10.21,"folders":["Utilities","XKMSLFH"],
"services":[{"name":"DOM2013","type":"ImageServer"}]}

    则到目前为止,代理配置成功!

在项目中使用

    下面2行代码必须在项目中出现才能使该项目使用代理:

esri.config.defaults.io.proxyUrl= "http://192.168.0.207:9391/Java/proxy.jsp";
esri.config.defaults.io.alwaysUseProxy= false;

代理的配置帮助参考:https://developers.arcgis.com/javascript/jshelp/ags_proxy.html

猜你喜欢

转载自blog.csdn.net/idomyway/article/details/82770834
今日推荐