arcgis js 跨域代理proxy设置(java)

原创 2015年12月10日 09:28:46

为什么要使用代理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.0版本,下载后解压可以看到有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”)


(备注:若有多个不同域的服务地址,则需配置多个不同域的服务地址)

 

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

 

如何部署?

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

 

如何测试是否成功?

访问:http:// 192.168.0.207:9391/Java/proxy.jsp?ping,会看到:

{ "ProxyVersion": "1.1.0", "Configuration File":"OK", "Log File": "OK"},然后再访问:http:// 192.168.0.207:9391/Java/proxy.jsp?http://192.168.202.143:9797/arcgis/rest/services/?f=pjson,如果看到指定Arcgis Server目录下的json数据,如

{"currentVersion":10.21,"folders":["Utilities","XKMSLFH"],"services":[{"name":"DOM2013","type":"ImageServer"}]},则到目前为止,代理配置成功!

 

如何在项目中使用?

Inorder for your application to route requests through the proxy you must addcode to your application to define the location of the proxy. If all requestsin your application will use the same proxy you can specify the proxy locationusing proxyUrl. You can also specify whether or not the proxy should always beused for communication using alwaysUseProxy

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

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

esri.config.defaults.io.alwaysUseProxy= false;

 

In the code above,esriConfig refers to the object returned by the esri/config module.

Another option isto setup a proxy rule that defines the proxy for a set of resources with the sameURL prefix. If the request URL matches a rule, then the request will be routedthrough the proxy. To define a proxy rule specify the url for the proxy and theprefix for the resources that need to be accessed through the proxy.

下面的代码可不用出现在项目中,不知道具体有什么影响:

esri.urlUtils.addProxyRule({

       urlPrefix:"route.arcgis.com",

        proxyUrl:"http://192.168.0.207:9391/Java/proxy.jsp"

});


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

好像下面这2个地址说的配置方式都有点复杂【10.0版本server配置代理:

http://help.arcgis.com/zh-cn/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//00930000009q000000

10.2版本server配置代理:

http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/Using_a_forward_proxy_server_with_ArcGIS_Server/015400000309000000/


版权声明:本文为博主原创文章,未经博主允许不得转载。

ArcGIS JavaScript 代理设置

介绍如何使用ESRI Proxy 进行应用跨域设置
  • qingyimengwu
  • qingyimengwu
  • 2015年01月21日 22:12
  • 2230

如何设置代理页面(Proxy)

导语代理页面通常部署在一台服务器和一个应用系统之间,通过启用代理,你可以使一个应用系统认可你的行为是安全的,从而避开认证,正常访问设置了安全验证的服务。实现代理的方式之一是令牌(Token),虽然令牌...
  • linghe301
  • linghe301
  • 2014年12月25日 09:52
  • 5611

ArcGis代理.Net版本proxy.ashx

  • 2015年09月07日 15:15
  • 8KB
  • 下载

arcgis proxy.ashx,proxy.config

  • 2014年04月22日 09:26
  • 4KB
  • 下载

Arcgis api for JavaScript 跨域配置(在线编辑问题)

Arcgis api for JavaScript 跨域配置,在线编辑
  • a1002308667
  • a1002308667
  • 2016年07月27日 12:04
  • 3741

ArcGIS API for JavaScript开发教程系列(四)之离线部署与跨域问题

ArcGIS API for JavaScript开发教程系列(四)之离线部署与跨域问题
  • u011037214
  • u011037214
  • 2016年03月17日 12:14
  • 3401

esri的proxy和config的配置

一、遇到的问题描述:       在参考ArcGIS Resource Center中的Query task->Query map with buffer polygon中使用queryTask.e...
  • lz576825608
  • lz576825608
  • 2012年09月17日 21:12
  • 7899

esri.config.defaults.io.proxyUrl设置

1、前言:     在IE8中使用用圆形或椭圆形进行缓冲区查询时,会报如下错误:esri.config.defaults.io.proxyUrl 尚未进行设置。如果向启用了 CORS 的服务器发出请求...
  • cc752
  • cc752
  • 2017年03月09日 10:59
  • 1899

针对ArcGIS Server 跨域问题的解释

XMLHttpRequest cannot load http://server/arcgis/rest/info?f=json. Origin http://localhost:8080 is no...
  • u014801367
  • u014801367
  • 2015年09月19日 16:52
  • 4520

Arcgis API for Javascript笔记 -- Step1搭建代理服务器

构建arcgis api for javascript的代理服务器,在调用地图服务时无需每次都填写登录信息...
  • liuxinming_0728
  • liuxinming_0728
  • 2017年04月06日 22:31
  • 458
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:arcgis js 跨域代理proxy设置(java)
举报原因:
原因补充:

(最多只允许输入30个字)