具有 API 的代理页面

本主题专门讨论使用代理,有关使用 CORS 的其他信息,请参阅 CORS 指南主题。CORS 现在是访问跨域资源的首选方法。

CORS 之前,有必要使用代理页面。这很有帮助,因为它用于避开许多应用程序在访问不在同一源上的资源时遇到的问题。

如果未在 Web 服务器上启用 CORS,则需要代理来避开这些资源的安全性问题。

通过 geosceneRequest 提出的所有请求均支持 CORS。无论您访问的数据类型如何(例如 GeoScene Enterprise 服务、WMS 和 WMTS 服务等),正在访问的 Web 服务器都需要支持 CORS。如果不是这种情况,或者您不确定是否支持 CORS,则应在应用程序中配置代理。可通过 proxyUrl 在应用程序中引用此代理。通过添加此功能,应用程序具有备用机制,以防服务请求因缺少 CORS 支持而失败。


使用代理的步骤

1 - 获取或构建第三方代理

代理在其自己的 Web 服务器上安装和运行,而不是在 GeoScene 服务器上或安装了 GeoScene Enterprise 的计算机上运行(除非您的 Web 服务器也托管 GeoScene Enterprise 实例)。

2 - 使用代理

为了使应用程序能够通过代理来路由请求,则必须向应用程序添加代码,以定义代理的托管位置。

如果应用程序中的所有请求都使用相同的代理,请使用请求对象的 proxyUrl 属性指定位置。

   
1
2
3
require(["geoscene/config"], function(geosceneConfig) {
  geosceneConfig.request.proxyUrl = "/proxy/Java/proxy.jsp";
});

还可以使用特定的代理规则来配置您的应用程序。这些规则指示代理使用具有相同 URL 前缀的特定资源。当应用程序尝试通过此 URL 访问资源时,将通过指定的代理发送请求。请求的 proxyRules 属性是列出所有这些代理规则的对象。要填充此内容,请使用 urlUtils.addProxyRule()

      
1
2
3
4
5
6
require(["geoscene/core/urlUtils"], function(urlUtils) {
  urlUtils.addProxyRule({
    urlPrefix: "my-standalone-arcgis-server.com",
    proxyUrl: "/proxy/Java/proxy.php"
  });
});

3 - 测试和部署应用程序

使用应用程序配置代理页后,请测试应用程序以确保正确处理请求。应用程序应像执行代理页之前一样正常运行。换句话说,所有 HTTP/HTTPS 请求都应返回有效响应,并且任何请求都不应失败。如果没有,则可能需要对代理进行故障排除。

  • 如果应用程序环境支持调试模式,则可以在代理页面中设置断点并检测其是否正常运行。执行应在断点处停止,并且应能够检测到问题所在。您还可以在应用程序的 JavaScript 函数中设置断点,或插入控制台语句以在执行期间显示值。

  • 如果可能,请为代理启用日志记录。启用后,消息将写入日志,有利于排除故障。

  • 确保在应用程序代码中为代理指定了正确的位置。这是最常见的错误原因。您可以使用浏览器开发人员工具来确定是否已成功定位代理。为此,请激活浏览器调试工具,然后检查网络请求。专门查找 POST 到代理的请求。如果在应用程序中看到 404 错误,则表示未找到代理。检查请求属性以查看应用程序查找代理的路径。

4 - 保护代理应用程序

需要保护代理应用程序,以便只有经过授权的应用程序才能访问。有关其他详细信息,请参阅 GeoScene 安全和身份验证文档。

其他信息

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.