Skip To Content

限制对 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 服务发送恶意命令的可能性。

  1. 打开 ArcGIS Server 管理员目录,然后以具有服务器管理访问权限的用户身份登录。URL 地址格式为 http://gisserver.domain.com:6080/arcgis/admin
  2. 单击系统 > 处理程序 > 其余 > 服务目录
  3. 服务目录页面中,单击编辑
  4. AllowedOrigins 字段中,指定一个包含计算机及其域名(可访问 Web 服务,例如 https://machine.esri.com, http://host.arcgis.com, https://gisserver.example.com)的逗号分隔的列表。
    注:

    不支持使用 * 通配符来代替机器名称。必须在列表中指定完全限定的机器域名。

  5. 单击保存