TL;DR:Leaflet 只操作 DOM,这样做永远不会引发 CORS 错误。
Leaflet 创建<img>DOM 元素,并将它们添加到 DOM。魔法开始发生在这行代码:
var tile = document.createElement('img');
然后设置src属性,使元素看起来像<img src='foo/x/y/z.png'>:
tile.src = this.getTileUrl(coords);
然后,通过这一行L.GridLayer将该元素添加<img>到 DOM的功能:
container.appendChild(tile);
然后有一点魔法将它定位<img>在一些容器元素中,使其保持在正确的位置,并在加载图像时重置其 CSS 类。
Leaflet 操作 DOM。Leaflet不做的是通过 javascript 访问图像信息。换句话说:传单不使用XmlHttpRequest也不fetch。
因此,代码在加载资源时不会抛出与 CORS 相关的错误,因为这只发生在通过XmlHttpRequestor请求资源时fetch。
但是,如果您尝试访问 JS 代码中的图像数据,您会发现 CORS 错误(通常这是通过canvas功能完成的,例如,请参阅L.TileLayer.GL尝试将加载的图块用作 WebGL 纹理)。但在基本情况下不会发生这种情况。
另请注意,如果加载失败(由于 HTTP 错误或其他原因) ,图像将触发error事件。反过来,这将使L.TileLayers 触发一个tileerror事件。如果您对查看磁贴加载错误感兴趣,您可能需要为此使用事件处理程序。