限制对 ArcGIS Server 的跨域请求
在本主题中
默认情况下,ArcGIS Server 允许跨域请求,因此 Adobe Flash Player、Microsoft Silverlight 和 Javascript 客户端可从任意域调用服务器服务。
如要限制 Adobe Flash Player 和 Microsoft Silverlight 对特定域的请求,可在 Web 服务器的根级别下放置一组客户端访问策略文件,并将其编辑为仅列出信任的域。如果 Web 服务器上不存在任何访问策略文件,一种轻松获取这些文件的方式是选择将其作为 ArcGIS Web Adaptor 安装内容的一部分进行安装。
如要限制 Javascript 应用程序对特定域的请求,可将 ArcGIS Server 配置为仅信任特定域。您可以使用 ArcGIS Server 管理员目录进行此设置。
有关如何限制来自 Adobe Flash Player、Microsoft Silverlight 和 Javascript 应用程序的请求,请参阅以下部分。
限制来自 Adobe Flash Player 和 Microsoft Silverlight 应用程序的请求
Adobe Flash Player 和 Microsoft Silverlight 插件不可以访问位于 Web 应用程序所在域以外的 Web 服务。但有一种情况例外:访问的 Web 服务器包含一个列出了批准可进行域跨域请求的 Web 应用程序的客户端访问策略文件。使用 Adobe Flex 时,客户端访问策略文件名为 crossdomain.xml。使用 Microsoft Silverlight 时,该文件通常为 clientaccesspolicy.xml(尽管 Silverlight 也可使用 crossdomain.xml)。
默认情况下,ArcGIS Server 允许跨域请求。为此,在安装 ArcGIS Server 时,将在 GIS 服务器上放置一组客户端访问策略文件。禁止移除、打开或修改这些文件。
如果希望禁止其他域中托管的 Flex 和 Silverlight 应用程序使用您的 Web 服务,则应安装 ArcGIS Web Adaptor,并在 Web 服务器的根级别中单独放置一组访问策略文件。Web 适配器设置可选择性地为您创建这些文件。无论用何种方式获取这组文件,您都可以将其列表修改为仅包含信任的域。这样可降低未知 Flash Player 或 Silverlight 控件向 Web 服务发送恶意命令的可能性。
以下是通过 Web 适配器安装的 crossdomain.xml 文件。您可以修改此文件,使其限制级别更高。要了解如何修改此文件,请参阅 Adobe 跨域策略文件规范。
通过 Web Adaptor 安装的 crossdomain.xml:
<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*"/>
<site-control permitted-cross-domain-policies="all"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
以下是通过 Web Adaptor 安装的 clientaccesspolicy.xml 文件。您可以修改此文件,使其限制级别更高。要了解如何修改 clientaccesspolicy.xml 文件,请参阅使服务跨域边界可用和 Microsoft Silverlight 中的网络安全访问限制。
通过 Web Adaptor 安装的 clientaccesspolicy.xml:
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
警告:
无论是否存在客户端访问策略,都无法保证您的站点在跨站点方面没有任何弱点。例如,无论客户端访问策略文件中的内容如何,在 Flash Player 或 Silverlight 以外运行的应用程序或脚本均可通过 REST 直接调用您的服务。
限制来自 Javascript 应用程序的请求
默认情况下,ArcGIS Server 允许 Javascript 应用程序访问所有 Web 服务。如要阻止其他域中的特定 Javascript 应用程序使用您的 Web 服务,则可为 ArcGIS Server 配置一个仅包含信任域的列表。这样可降低未知应用程序向 Web 服务发送恶意命令的可能性。
- 打开 ArcGIS Server 管理员目录,然后以具有服务器管理访问权限的用户身份登录。URL 地址格式为 http://gisserver.domain.com:6080/arcgis/admin。
- 单击系统 > 处理程序 > 其余 > 服务目录。
- 在服务目录页面中,单击编辑。
- 在允许的来源字段中,指定一个包含机器及其域名(可访问 Web 服务,例如 machine.esri.com, host.arcgis.com, gisserver.example.com)的逗号分隔的列表。
注:
不支持使用 * 通配符来代替机器名称。必须在列表中指定完全限定的机器域名。
- 单击保存。