部署应用程序时,您可能需要使用代理。 Web AppBuilder 支持在下列情况下使用代理:
- 访问跨域资源
- 超过 2048 个字符的请求
- 访问受基于令牌的身份验证保护的资源
- OAuth 2.0 应用程序登录
- 启用记录
- 基于资源和 referer 的比率限制
默认情况下,已下载的应用程序使用由 ArcGIS Online 提供的代理。 可通过修改应用程序配置文件中的 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"
}]
}