Node.js 使favicon.ico显示在网页的顶部栏中

Node.js 使favicon.ico显示在网页的顶部栏中,node.js,request,favicon,Node.js,Request,Favicon,我正在使用node.js运行服务器。通常,当我向它发出请求时,实际上会出现两个请求,一个是普通请求,一个是真正发出的请求,另一个是request/favicon.ico。因此,我试图将favicon.ico发回,因为我希望它显示在顶部栏中。但它只是没有出现在那里 我做错了什么?这是我的密码: var http = require("http"); http.createServer(onRequest).listen(7777); console.log("Server is running

我正在使用node.js运行服务器。通常,当我向它发出请求时,实际上会出现两个请求,一个是普通请求,一个是真正发出的请求,另一个是
request/favicon.ico
。因此,我试图将favicon.ico发回,因为我希望它显示在顶部栏中。但它只是没有出现在那里

我做错了什么?这是我的密码:

var http = require("http");

http.createServer(onRequest).listen(7777);
console.log("Server is running now.....");

function onRequest(request, response)
{
    console.log("A user made a request" + request.url);
    response.writeHead(200, {"Context-Type": "text/plain"});
    response.write("Here is some data");
    response.end();
}
我把favicon.ico文件放在我的
server.js
所在的文件夹中


这个问题:不适合我,因为答案中的答案和代码已经被接受,因为它不适合我。

你可以在你的html页面的head标签中添加这一行


您可以通过在html页面的head标记中添加这一行来实现这一点


如果您直接使用
http
模块,那么您必须检查每个请求的
请求
对象,并为所有请求favicon的请求自己提供favicon文件

在您的示例中,您必须测试
onRequest()
函数中的
request
对象,并为某些请求提供favicon,为其余请求提供原始资料

如果您将Express或其他框架与Connect兼容的中间件一起使用,那么您将能够使用如下模块:

如果您只想使用
http
模块而不使用Express或任何其他更高级别的框架,请参阅此答案,以获取有关如何使用
http
(以及Express)提供静态图像的示例,这些示例将帮助您:


如果您直接使用
http
模块,那么您必须检查每个请求的
请求
对象,并为所有请求favicon的请求自己提供favicon文件

在您的示例中,您必须测试
onRequest()
函数中的
request
对象,并为某些请求提供favicon,为其余请求提供原始资料

如果您将Express或其他框架与Connect兼容的中间件一起使用,那么您将能够使用如下模块:

如果您只想使用
http
模块而不使用Express或任何其他更高级别的框架,请参阅此答案,以获取有关如何使用
http
(以及Express)提供静态图像的示例,这些示例将帮助您:

这应该行得通

var http = require("http");
var fs = require("fs");

http.createServer(onRequest).listen(7777);
console.log("Server is running now.....");

function onRequest(request, response)
{
    console.log("A user made a request" + request.url);
    if (request.url === '/favicon.ico') {
      var fileStream = fs.createReadStream("./favicon.ico");
      return fileStream.pipe(response);
    }
    response.writeHead(200, {"Context-Type": "text/plain"});
    response.write("Here is some data");
    response.end();
}
但正如您所看到的,您必须为要处理的每个url创建一个特例。我建议使用像express这样的框架,这样会使事情变得简单

还有一个框架,您可以在静态目录中使用favicon,这样您就不必在每次请求静态文件时都从文件系统中显式读取。

这应该可以工作

var http = require("http");
var fs = require("fs");

http.createServer(onRequest).listen(7777);
console.log("Server is running now.....");

function onRequest(request, response)
{
    console.log("A user made a request" + request.url);
    if (request.url === '/favicon.ico') {
      var fileStream = fs.createReadStream("./favicon.ico");
      return fileStream.pipe(response);
    }
    response.writeHead(200, {"Context-Type": "text/plain"});
    response.write("Here is some data");
    response.end();
}
但正如您所看到的,您必须为要处理的每个url创建一个特例。我建议使用像express这样的框架,这样会使事情变得简单


此外,使用framework,您可以在静态目录中使用favicon,这样您就不必在每次请求静态文件时都从文件系统中显式读取。

可能会节省您的时间。我可以救你的命。你能给我箱子的密码吗?这样的代码,它将在普通请求下发送
favicon.ico
,我将能够在顶部栏中看到
favicon.ico
。我使用的服务器没有任何框架。你能为我的案例提供代码吗?这样的代码,它将在普通请求下发送
favicon.ico
,我将能够在顶部栏中看到
favicon.ico
。我使用的服务器没有任何框架。