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

转自:https://blog.csdn.net/wpz0713/article/details/50245041

为什么要使用代理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/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS API for JavaScript是一个用于构建地理信息系统应用程序的JavaScript库,它可以让开发人员在Web浏览器中使用地图、图层和空间分析。 Proxy代理ArcGIS API for JavaScript中用于解决跨域请求问题。当应用程序在不同的域上运行时,由于浏览器的同源策略限制,跨域请求可能会受到阻止。为了绕过这个限制,可以配置一个Proxy代理服务器来处理跨域请求。 在使用ArcGIS API for JavaScript中的Proxy代理时,可以选择使用不同的代理服务器。如果你使用的是.NET开发环境,可以配置一个ASP.NET代理服务器。 配置ASP.NET代理服务器需要以下步骤: 1. 创建一个新的ASP.NET项目。 2. 添加一个.asmx文件作为代理服务器的Web服务。 3. 在.asmx文件中编写代理服务器的逻辑,包括处理跨域请求的代码。 4. 在代理服务器代码中,首先判断请求是否来自ArcGIS API for JavaScript,并根据需要进行身份验证。 5. 如果请求符合要求,代理服务器将请求转发到目标服务器,并将其响应返回给浏览器。 例如,当使用ArcGIS API for JavaScript加载地图图层时,浏览器会发出跨域请求。代理服务器可以将这些请求转发到地图图层所在的服务器,并将响应返回给浏览器,绕过了同源策略的限制。 在ArcGIS API for JavaScript中配置代理时,可以指定代理服务器的URL和需要代理的URL模式。这样,所有匹配指定URL模式的请求都将被转发到代理服务器。 总结而言,ArcGIS API for JavaScript中的Proxy代理可以通过配置一个ASP.NET代理服务器来解决跨域请求问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值