Skip To Content

使用代理

在某些情况下,Esri Maps for IBM Cognos 使用内部代理机制以协调与 ArcGIS 平台的通信(除检索的 ArcGIS 项目所引用的任何 Web 服务)。需要时,Esri Maps for IBM Cognos 将向代理发送 HTTP 请求,然后代理将请求转发至远程 Web 服务器(例如 ArcGIS)。最后,代理会将响应转发回 Esri Maps for IBM Cognos

内部代理机制

如果 Esri Maps for IBM Cognos 及其使用的全部数据和 Web 服务均位于同一域内,或者客户端浏览器和所有服务器均支持跨域资源共享 (CORS),则无需使用内部代理。但在大多数生产环境中,此配置并不常见,建议配置内部代理。

指定启用了 CORS 的服务器(可选)

大多数现代浏览器都使用推荐的标准,即 CORS。CORS 标准会向 HTTP 规范添加标头,使服务器可描述来源集,从而实现使用 Web 浏览器读取资源及服务。

Esri Maps for IBM Cognos 会自动检测使用 CORS 的服务器,并成功与这些服务器进行通信。但在某些情况下,即便服务器启用了 CORS,初始请求(例如 HTTP POST)也会通过 Esri Maps for IBM Cognos 内部代理自动路由。作为 Esri Maps for IBM Cognos 管理员,您可在 Esri Maps for IBM Cognos 配置文件 (settings.js) 中列出已知启用了 CORS 的服务器的 URL,以确保从这些位置发出的所有调用均自动视为已启用 CORS,从而越过代理。

注:

必须将 corsEnabledServers 属性中列出的服务器预先配置为支持 CORS。向该列表添加服务器 URL 之前,请验证该服务器确实已启用 CORS。如果此设置所指定的服务器并未启用 CORS,则与 Esri Maps for IBM Cognos 服务器之间进行的通信将会失败。有关详细信息,请参阅启用跨域资源共享

要指定启用 CORS 的服务器,请执行以下步骤:

  1. 使用标准文本编辑器打开应用程序配置文件。

    配置文件在 EM4C Gateway 中位于以下位置:<em4c_location>\webcontent\esrimap\configuration\settings.js

  2. corsEnabledServers 属性中,指定要自动视为已启用 CORS 的服务器的 URL。

    每个 URL 需使用引号括起,多个 URL 需使用逗号隔开。

    例如:corsEnabledServers: ["mapserver.mycompany.com", "otherserver.othercompany.com"]

    注:

    该列表中不能包含使用 Web 层身份验证的 Portal for ArcGIS 实例。但是,在此情况下将始终执行自动 CORS 检测,不会涉及代理。

  3. 保存并关闭 settings.js 文件。

配置内部代理

内部代理的设计虽然在最大程度上减少了其自定义配置,但您仍可自定义其设置以仅允许对特定服务器的请求,也就是说,您可以指定代理转发请求所到达的目标资源。

要配置内部代理设置,请使用标准文本编辑器修改代理配置文件。

代理配置文件 (proxy.conf) 位于 EM4C Gateway 中,位置为 <em4c_location>\temp\proxy.conf

注:

如果 Esri Maps for IBM Cognos 实现包含多个网关,则代理配置文件必须针对各个网关进行更新。全部网关上应具有相同设置。

要定义 Esri Maps for IBM Cognos 允许访问的 URL,请在单独的 serverUrl 属性中指定各项 URL。为每个服务器创建单独的 serverUrl 属性,Esri Maps for IBM Cognos 必须访问该服务器以检索地图服务。

注:

matchUrls 属性设置为 true,即指定代理只能访问显式列出的服务器。将该属性设置为 false 则表示代理可以访问任何服务器,并且将忽略所有列为 serverUrl 的服务器。

例如:

matchUrls = true
serverUrl = http://www.arcgis.com
serverUrl = https://arcgis.com
serverUrl = http://myserver.mycompany.com

测试代理

要测试内部代理,请通过该代理路由 HTTP 请求。如果代理返回预期值,则表示运行正常。以下步骤例举了若干调用,模拟出 Esri Maps for IBM Cognos 将产生的 HTTP 流量。

  1. 要验证 Esri Maps for IBM Cognos 内部代理的位置,请在 Web 浏览器地址栏中键入其 URL。

    http://myibmcognosserver/ibmcognos/em4c/cgi-bin/em4c.cgi

    成功访问内部代理后,页面会显示时间戳,例如 Thu Oct 02 07:34:52 PDT 2014。如果未得到预期响应,则请验证内部代理配置设置。

  2. 请验证您可以连接到已知资源。

    例如,以下各个 URL 均应返回描述服务器中安装的软件版本的 JSON 对象。

    • ArcGIS Online:http://www.arcgis.com/sharing?f=pjson
    • Portal for ArcGIS 实例:http://myPortal/gis/sharing/?f=pjson

  3. 通过内部代理路由流量。

    例如,以下各个 URL 均应返回描述服务器中安装软件版本的 JSON 对象:

    • ArcGIS Online:http://ibmcognosserver/ibmcognos/em4c/cgi-bin/em4c.cgi?http://www.arcgis.com/sharing?f=pjson
    • Portal for ArcGIS 实例:http://ibmcognosserver/ibmcognos/em4c/cgi-bin/em4c.cgi?http://myPortal/gis/sharing/?f=pjson

    注:

    如果将调用路由到内部代理但未返回预期结果,您可能需要使用上游代理来访问资源。这种情况下,请配置上游代理,然后在此会话中再次运行测试。内部代理将通过上游代理路由流量,并将预期结果返回至 Web 浏览器。有关详细信息,请参阅配置可选上游代理

    如果得到成功结果,则表示代理配置正确,可正常工作。

配置可选上游代理

如果 Esri Maps for IBM Cognos 必须使用其内部代理,则内部代理必须能够将 HTTP 请求转发至所需的目标资源(例如地图服务)。某些环境下,防火墙规则会阻止发送这些请求;例如,防火墙可能会阻止 HTTP 流量传出内部网络。

要解决这一问题,您可配置上游转发代理。

上游代理可实现网络外部的连接,而不破坏内部网络的安全。上游代理的一种常见使用方法是在外围网络中安置代理服务器,来保护内部网络。

在外围网络中安置可选上游代理服务器以保护内部网络

上游代理代表企业级第三方(非 Esri)解决方案。它不属于 Esri Maps for IBM Cognos

注:

Esri Maps for IBM Cognos 不支持需要身份验证的上游代理服务器。

Esri Maps for IBM Cognos 代理配置文件中包含可用于配置上游代理的属性。

要配置上游代理设置,请使用标准文本编辑器修改代理配置文件

  1. upStreamProxy 属性设置为 true
  2. 使用以下惯例指定 upStreamProxyUrl
    http://<address>:<port>

    其中:

    • address - 代理服务器地址,例如 proxy.mycompany.com
    • port - 为代理服务器指定的端口号,例如 8888

    例如:

    upStreamProxy = true
    upStreamProxyUrl = http://proxy.mycompany.com:8888

    注:

    如果使用 IP 地址指定代理服务器的位置,请勿键入前导零(例如,请使用 130.25.0.1 而非 130.025.000.001)。

    如果您不清楚代理服务器的 Web 地址或端口号,请联系网络管理员。

  3. 要测试上游代理,请通过内部代理路由请求,这样会使调用路由至上游服务器。有关详细信息,请参阅测试代理