我想从与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标头。