漏洞

漏洞:在 ArcGIS Online Jupyter Notebooks 中执行 HTTPS/HSTS 的修复

Last Published: February 10, 2021

描述

在 Jupyter Notebook 中运行时,MapView 微件无法在 ArcGIS Pro 中托管的 Jupyter Notebook 中显示。 ArcGIS API for Python 提供一个交互式地图微件,可以实现地图、空间数据等内容的可视化。 此地图微件通常通过 gis.map()、arcgis.widgets.MapView() 和 arcgis.mapping.WebMap() 创建。

当在计算机上通过 http 运行 Jupyter Notebook 时,交互式地图微件在某些浏览器中可能无法正常加载。 此地图微件通过 js.arcgis.com 加载 ArcGIS API for JavaScript,该网站最近已强制实施 HSTS 标准(仅 HTTPS)BUG-000136038 与此问题相关联。

下图显示了在 ArcGIS Pro 中显示错误的 Jupyter Notebook MapView() 微件。

在 ArcGIS Pro 中显示错误的 Jupyter Notebook MapView 微件的图像

原因

Python API for Python 将重定向到更新后不再有效的 HTTP URL。

解决办法

如果遇到上述错误,请将 ArcGIS API for Python 更新为版本 1.8.4。 此版本包含对地图微件不绘制问题的修复。

要使用 Python 软件包管理器升级 arcgis 软件包,请执行以下操作

  1. 使用新空白工程打开 ArcGIS Pro。
  2. 选择工程选项卡以访问 Pro 后台,如以下屏幕截图所示。
  3. 选择 Python 菜单选项。
  4. 使用工程环境管理环境选项并克隆默认值。
  5. 克隆后,选择合适的环境并重新启动 Pro。
  6. 返回 Python 菜单并选择更新软件包选项。
  7. 从具有最新更新的软件包列表中选择合适的 arcgis 版本,或选择全部更新

显示了软件包列表的 Python 工程环境

  1. 刷新已安装的软件包以验证是否已安装版本 1.8.4:显示了软件包版本的已刷新 Python 工程环境

现在,地图微件将显示:

笔记本中的地图微件

注: 在本文的早期版本中,在更新 arcgis API 之前,Esri 建议了一些解决方法以确保微件可以进行绘制。 如果您使用了以前的解决方法之一,请确保撤消这些操作:
  • 如果您使用的是版本 1.8.1 或更高版本的 Arcgis API,并且之前已将环境变量 JSAPI_CDN 设置为 https://js.arcgis.com/4.15/,请确保移除此变量。
  • 如果使用以下代码在笔记本的开始位置设置了环境变量,请确保将其删除。
import os os environ['JSAPI_CDN'] = 'https://js.arcgis.com/4.15/'
  • 如果使用 Windows 系统属性已将 JSAPI_CDN 变量添加到系统或用户环境变量,请删除该变量。
  • 如果您使用的是版本 1.5.0 至 1.8.0 的 arcgis API,并已使用以下代码将 MapView js_cdn 属性设置为 https://js.arcgis.com/4.15/,请确保将其删除。
from arcgis.widgets import MapView MapView.set_js_cdn('https://js.arcgis.com/4.15/')

关于旧版本 Python API 的说明

不同版本的 Python API 针对不同的 JS API 版本。 如果在旧版本 Python API 上运行,请将 JS API CDN 设置为正确版本。 请参阅下表。 以下脚本将显示已安装的 Python API 版本:

import arcgis arcgis.__version__
Python API 版本JS API 版本
1.8.44.15
1.8.34.15
1.8.24.15
1.8.14.15
1.8.04.14
1.7.14.13
1.7.04.13
1.6.24.11
1.6.14.11
1.6.04.10
1.5.24.9
1.5.14.8
1.5.04.8

文章 ID:000024831

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

相关信息

发现关于本主题的更多内容