我想从特定目录加载tsv文件,该目录与d3目录不同。
我的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:///
答案 0 :(得分:2)
我最终使用"/"
python -m SimpleHTTPServer 8888 &
运行服务器
从localhost访问我的html文件
例如 - http://localhost:8888/home/meet/workspace/d3_test/scripts/data_fetch.html
我的tsv文件位于以下位置
http://localhost:8888/home/meet/data/data.tsv
注意: - 在root "/"
设置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头。
答案 1 :(得分:0)
似乎没有足够的证据可以断定这是一个跨域问题。控制台日志应该能够提供更多详细信息,但我猜测问题是服务器没有正确设置mime类型以用于制表符分隔值。根据{{1}}个tsv
文件,mime类型应为"text/tab-separated-values"
。应该很容易在控制台中检查这一点。