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

时间:2019-07-17 17:57:10

标签: firefox d3.js topojson

直到上周,按照以下方式访问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中仍然存在,除了这里的错误是:

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

我无法找到任何有关此的信息。发生什么事了?

1 个答案:

答案 0 :(得分:2)

请参见release notes

  

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

更多详细信息在security advisories

下给出
  

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

当前无法访问相关的错误,但是bug 803143中有相关的讨论。我认为他们还没有记录开发人员可以使用哪些选项来继续处理本地多文件文档。

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

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