有没有办法为node.js(没有快递)使用'http'和'fs'模块为HTML页面设置图标?
我的目录中有index.html,main_page.css和favicon.ico文件。
当客户端连接时,它会收到index.html:
<!DOCTYPE html>
<html>
<head>
<title>Site</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="css/main_page.css" />
</head>
<body>
</body>
</html>
然后服务器收到.css文件的请求并将其发送到客户端。
页面的样式应该是,所以没有理由显示代码。
问题是,为什么客户自己要求.css文件并且不要求.ico?
这是服务器上的代码,用于提供文件:
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res) {
switch (req.url) {
case '/': {
get_file('index.html', res);
break;
}
case '/css/main_page.css': {
get_file('css/main_page.css',res);
break;
}
case '/favicon.ico': {
get_file('favicon.ico', res);
break;
}
default: {
res.statusCode = 404;
res.end("Not found");
}
}
}).listen(8081);
function get_file(path, res) {
//dont mind my ROOT ;0
fs.readFile(ROOT + path, function(err, content) {
if(err) {
console.log(err.message);
} else {
console.log(path);
res.end(content);
}
})
}
答案 0 :(得分:1)
Chrome会缓存favicon.ico
文件,因此一旦请求一次,在缓存过期之前不会再次请求它。要为favicon.ico
生成新请求,您需要在Chrome中刷新页面。