部署应用程序时,您可能需要使用代理。Web AppBuilder 在下列情况下支持使用代理:
- 访问跨域资源
- 超过 2048 个字符的请求
- 访问受基于令牌的身份验证保护的资源
- OAuth 2.0 应用程序登录
- 启用记录
- 基于资源和 referer 的比率限制
默认情况下,已下载的应用程序使用由 Portal for ArcGIS 提供的代理。 可通过修改应用程序配置文件中的 httpProxy 属性来指定您自己的代理和规则。httpProxy 属性包括以下特性:
属性 | 说明 |
---|---|
useProxy | 布尔型。可选。默认:true。如果为 false,则所有请求均不能使用代理。 |
url | 字符串。可选。用于指定代理位置的 URL。如果请求与任意代理规则均不匹配但必须使用代理(例如跨域请求),则会使用此代理。 |
alwaysUseProxy | 布尔型。可选。指定是否始终将代理用于与 REST 端点进行通信。默认:false。如果请求与任意代理规则均不匹配且不需要代理,则应用程序会检查该属性,以确定如何进一步使用代理。如果为 false,则请求不能使用引用 url 的代理。如果为 true,则请求可以使用引用 url 的代理。 |
规则 | Object[]。可选。为具有相同 URL 前缀的一组资源定义代理。如果请求 URL 与规则匹配,则请求会通过代理发送。每个规则具有两个属性:
|
警告:
当 useProxy 为 false 且请求超过 2048 个字符时,将发送 POST 请求代替 GET 请求。此外,如果服务支持 CORS,则可以直接将 POST 请求成功发送到服务。否则,POST 请求失败。当 useProxy 为 true 且发送了 POST 请求时,如果服务不支持 CORS,则会通过代理自动发送 POST 请求。
下列内容介绍代理如何基于上述属性发挥作用:
- 应用程序会检查 useProxy。
- 如果为 false,则所有请求均不能使用代理。
- 如果为 true,应用程序会检查 rules。
- 如果请求与代理规则匹配,则应用程序使用规则中设置的 proxyUrl。
- 如果请求与任意代理规则均不匹配但必须使用代理(例如跨域请求),应用程序则会使用引用了 url 的代理。
- 如果请求与代理规则不匹配且不需要代理,则应用程序会进一步检查 alwaysUseProxy。
- 如果为 false,则请求不能使用引用 url 的代理。
- 如果为 true,则请求可以使用引用 url 的代理。
示例:
"httpProxy": {
"useProxy": true,
"url": "http://gallery.chn.esri.com/arcgis/sharing/proxy",
"alwaysUseProxy": false,
"rules": [{
"urlPrefix": "http://route.arcgis.com/",
"proxyUrl": "resource-proxy-1.0/DotNet/proxy.ashx"
}]
}
此外,Esri 可提供三种代理,每种代理针对一种特定服务器端平台:ASP.NET、Java/JSP 和 PHP。请从 GitHub 下载并部署适合您平台的代理。另外,请参阅博客文章中的使用代理和用 Web AppBuilder 设置代理示例。