Skip To Content

使用代理

部署应用程序时,您可能需要使用代理。在下列情况下,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 与规则匹配,则请求会通过代理发送。每个规则具有两个属性:

  • urlPrefix - 字符串。需要通过给定代理访问的资源的 URL 前缀。
  • proxyUrl - 字符串。代理的 URL。

下列内容介绍代理如何基于上述属性发挥作用:

  • 首先,应用程序检查 useProxy
    • 如果为 false,则所有请求均不使用代理。
    • 如果为 true,则应用程序继续检查规则
      • 如果请求与代理规则匹配,则应用程序使用规则中设置的 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 下载并部署适合您平台的代理。此外,有关详细信息,请参阅使用代理页面