esri.config.defaults.io.proxyUrl设置

简介:

1、前言:

    在IE8中使用用圆形或椭圆形进行缓冲区查询时,会报如下错误:esri.config.defaults.io.proxyUrl 尚未进行设置。如果向启用了 CORS 的服务器发出请求,请将域推送到 esri.config.defaults.io.corsEnabledServers。但是我们手动绘制一个简单多边形作为输入参数则不会出现上述错误。


2、原因:

    一般使用框选的时候对query.geometry,我们一般会赋予一个Extent变量,但是当我们需要用一个比如圆,或者点很多的不规则多边形的Polygon去查询时,就会出现esri.config.defaults.io.proxyUrl 尚未进行设置”错误。因为多边形(含有的point多)导致的web service的url的参数个数大于2048个,而我们这里采用的是get方式(最大的字符数为2048)不是post方式。所以我们需要一个proxy page做代理通过代理使用post方式做查询,这样我们就不会受限于字符总数的限制了。


3、post和get请求的区别

   根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的,POST表示可能修改变服务器上的资源的请求。

(1)Get方式:首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。注意这是限制是整个URL长度,而不仅仅是你的参数值数据长度。

(2)Post方式:理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

(3)代理页面:通常部署在一台服务器和一个应用系统之间,通过启用代理,你可以使一个应用系统认可你的行为是安全的,从而避开认证,正常访问设置了安全验证的服务。实现代理的方式之一是令牌(Token),虽然令牌本身是不可见的,但是应用却可以通过基于令牌验证的验证,这是由于代理在后台处理了一个超过2048个字符的post请求完成的。另外,当一个应用和一个需要引入的资源之间存在跨域问题时,代理就可以帮助你解决跨域访问问题了。

当我们所请求的url总地址长度大于2048个字符,我们可以通过代理的方式将get请求通过代理转换为post请求,这样就避免了长度受限的问题。


3、解决

3.1 下载代理包

https://github.com/Esri/resource-proxy/releases,内如如下:

1.1.0

@bsvensson bsvensson released this on 6 Nov 2015 · 8 commits to master since this release

Added

Support for 10.3 tokens

Support for federated services

Support for hostRedirect to use aliased domains

Added "?ping" for easier testing

(DotNet) Support for Windows authentication

wKiom1bWs7mDd66eAABEswCRx14844.png

目录中包含三个子目录,分别对应不同的Web服务器类型:

(1)DotNet – IIS服务器

(2)Java – Tomcat 服务器

(3)PHP – Apache服务器


3.2 在IIS上部署

   在IIS服务器下,将DotNet文件夹下的四个文件拷贝到IIS的wwwroot目录下,内如如下(Web.config文件可以只拷贝里面部分内容到项目的web.config文件夹中)。

proxy.ashx,proxy.config,proxy.xsd,Web.config

   在浏览器里访问localhost/prosy.ashx,如果返回以下结果,则说明配置成功。

wKioL1bWtiagzc9MAAB85wGKEJw443.jpg

修改配置文件proxy.config,加入如下内容:

1
2
3
4
5
6
7
8
9
<? xml  version = "1.0"  encoding = "utf-8"  ?>
< ProxyConfig  allowedReferers = "*"   mustMatch = "true" >
     < serverUrls >
       < serverUrl  url = "http://services.arcgisonline.com"    matchAll = "true" />
       < serverUrl  url = "http://59.75.119.108:6080/arcgis/rest/services"    matchAll = "true"
相关文章
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
|
3月前
|
JavaScript 前端开发 Ubuntu
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
58 0
文本vitepress,如何设置背景图,如何插入背景图,如何插入logo,为了放背景图片,我们要新建pubilc的文件夹,插入logo要在config.js中进行配置,注意细节,在添加背景时,注意格式
文本vitepress,如何设置背景图,如何插入背景图,如何插入logo,为了放背景图片,我们要新建pubilc的文件夹,插入logo要在config.js中进行配置,注意细节,在添加背景时,注意格式
Baumer工业相机堡盟相机VCXG系列相机IO控制外部光源设置
Baumer工业相机堡盟相机VCXG系列相机IO控制外部光源设置
132 0
|
SQL 缓存 开发框架
THINKPHP5中的config设置实例
THINKPHP5中的config设置实例
186 0
|
关系型数据库 MySQL 数据安全/隐私保护
mysql_config_editor 设置密码set --login_path
mysql_config_editor可以给指定的连接和密码生成一个加密文件.mylogin.cnf
156 0
|
Oracle 关系型数据库
Oracle中filesystemio_options 和 disk_asynch_io 参数的设置
参考文档Doc ID 1987437.1 filesystemio_options参数,中间是这个参数的配置值。
365 0
|
网络安全 开发工具 git
git config 查看,设置,删除项
git config 查看,设置,删除项
git config 查看,设置,删除项