没有要求Fav​​icon.ico

时间:2015-10-03 20:14:12

标签: html node.js ico

有没有办法为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);
    }
  })
}

1 个答案:

答案 0 :(得分:1)

Chrome会缓存favicon.ico文件,因此一旦请求一次,在缓存过期之前不会再次请求它。要为favicon.ico生成新请求,您需要在Chrome中刷新页面。