我想从与d3目录不同的特定目录加载tsv文件。
我的d3脚本位于/home/meet/workspace/d3_test/scripts和运行在“ /”根目录下的SimpleHTTPServer下。

d3.tsv("http://localhost:8888/home/meet/data/data.tsv",function(error,data){
    console.log("fetching data.tsv file "+error+data);
    });


引发错误:

GET http://localhost:8888/home/meet/data/data.tsv 200 OK 5ms (in red color)
fetching data.tsv file [object XMLHttpRequest] undefined


注意:-


尝试传递不支持的file:///
Mike mentions link与SimpleHTTPServer
另外,我也不想编辑浏览器设置

最佳答案

我最终在"/"的根python -m SimpleHTTPServer 8888 &运行服务器

从本地访问我的HTML文件

例如-http://localhost:8888/home/meet/workspace/d3_test/scripts/data_fetch.html

我的tsv文件在以下位置

http://localhost:8888/home/meet/data/data.tsv


注意:-在根目录"/"上设置SimpleHTTPServer可帮助您以给定的安全性从任何目录中获取任何文件。

编辑:-

不幸的是,SimpleHTTPServer确实如此简单,它不允许任何自定义,尤其是不允许其发送的标头。但是,您可以使用大多数SimpleHTTPServer自己创建一个简单的HTTP服务器,而只需添加所需的标头即可。

只需创建一个文件simple-cors-http-server.py(或其他文件),然后将以下内容放入其中:

#! /usr/bin/env python2
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer

class CORSRequestHandler (SimpleHTTPRequestHandler):
    def end_headers (self):
        self.send_header('Access-Control-Allow-Origin', '*')
        SimpleHTTPRequestHandler.end_headers(self)

if __name__ == '__main__':
    BaseHTTPServer.test(CORSRequestHandler, BaseHTTPServer.HTTPServer)


然后,您可以执行python simple-cors-http-server.py,它将启动修改后的服务器,该服务器将为每个响应设置CORS标头。

09-25 16:48