我正在使用Restify来提供我的静态网页。 html文件调用服务器以获取脚本和css文件。
我正在创建的服务器需要使用前缀为/ safe / endpoint
的所有端点我已经能够为index.html文件提供服务,但是当浏览器尝试包含脚本和css文件时,我会收到404状态代码。
当我转到localhost:1337 / safe / endpoint时,我得到正确呈现的index.html。但是当浏览器尝试下载其他文件时,它会使用localhost:1337 / safe而不是localhost:1337 / safe / endpoint为index.html中的路径添加前缀。
示例:
index.html以此路径提供
localhost:1337/safe/endpoint
index.html文件中的我有这个包含
<script src="app/js/thing.js"></script>
当浏览器尝试获取thing.js时使用此路径
localhost:1337/safe/app/js/thing.js
而不是
localhost:1337/safe/endpoint/app/js/thing.js
服务器代码如下所示
server.get("/safe/endpoint", function(req, res){
fs.readFile("./frontend/index.html", "utf8", function(err, data){
if(err){
res.setHeader('content-type', 'text/plain');
res.send(404, "No index.html found");
} else {
res.setHeader('Content-Type', 'text/html');
res.writeHead(200);
res.end(data);
}
});
});
server.get("/safe/endpoint/app/.*", function(req, res){
var filePath = "./frontend" + req.url.split("/safe/endpoint")[1];
fs.readFile(filePath, "utf8", function(err, data){
if(err){
res.setHeader('content-type', 'text/plain');
res.send(404, req.url + " not found");
} else {
res.setHeader('Content-Type', 'text/html');
res.writeHead(200);
res.end(data);
}
});
});
答案 0 :(得分:1)
我能够使用restify模块中包含的serveStatic
server.get("/safe/endpoint/.*", restify.serveStatic({
directory: "./UI",
default: "index.html"
}));
但我需要在UI文件夹中添加前缀文件夹路径:
/UI/safe/endpoint/index.html
但这有一个缺点。请求服务器时,路径需要
example.com/safe/endpoint/
而不是
example.com/safe/endpoint