使用 d3.json 访问本地文件不再适用于 Firefox


直到

上周,在Firefox中访问本地文件都不是问题,如下所示:

<!DOCTYPE html>
<meta charset="utf-8">
<title>Albers Projection</title>
<style>
path {
  fill: #ccc;
  stroke: #fff;
  stroke-linejoin: round;
}
</style>
<svg width="960" height="500"></svg>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src ="https://d3js.org/topojson.v1.min.js"></script>
<script>
//Map obtained here:
//https://d3js.org/us-10m.v1.json
d3.json("US.json", function(error, us) {
  if (error) throw error;
  d3.select("svg").append("path")
      .datum(topojson.feature(us, us.objects.states))
      .attr("d", d3.geo.path());
});
</script>

但是,截至本周,d3.json 步骤出现错误:

未捕获的异常: [对象 XMLHttpRequest]

我不认为这是由于旧版本的 D3,因为它在 V4 和 topojson.v2 中仍然存在,除了这里的错误是:

未捕获的异常:[对象进度事件]

我找不到任何关于这个的东西。发生了什么事?

查看发行说明

本地文件无法再访问同一目录中的其他文件。

安全公告中提供了更多详细信息

#CVE-2019-11730:同源策略将目录中的所有文件视为具有同源文件

关联的 bug 目前无法访问,但在 bug 803143 中有相关的讨论。我认为他们还没有记录开发人员可以使用哪些选项(如果有的话(来继续使用本地多文件文档。

您可能必须回退到旧的jsonp技术或使用静态Web服务器。

对于本地开发,您可以使用 about:config -> privacy.file_unique_origin = false 覆盖此行为,但请注意,这会使您面临此更改旨在修复的本地数据泄露类型。

最新更新