使favicon.ico出现在网页的顶部栏中

时间:2017-03-14 12:10:35

标签: node.js request favicon

我使用node.js来运行服务器。总是当我向它发出请求时,实际上会发生两个请求,其中一个是普通请求,它是真正的,一个是request/favicon.ico。所以我尝试发送favicon.ico,因为我希望它出现在顶部栏中。但它不会出现在那里。

enter image description here

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

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所在的同一文件夹中。

enter image description here

这个问题:Set favicon in HTTP server?不适合我,因为答案中的答案和代码已被接受,因为它对我不起作用。

3 个答案:

答案 0 :(得分:1)

您可以在头标记的html页面中添加此行。

string s= "\" teetete \""; string t; t = s.Replace("\"", @"""");

答案 1 :(得分:1)

这应该有效

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();
}

但是你可以看到你必须为你想要处理的每个网址创建一个特殊情况。我建议使用像express这样的框架,这样可以让你轻松。

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

答案 2 :(得分:0)

如果直接使用http模块,则必须在每个请求上检查request对象,并自行为所有请求favicon的请求提供favicon文件。

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

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

如果您只想使用没有Express的http模块或任何其他更高级别的框架,请参阅此答案,了解如何使用http(以及Express)提供静态图像的示例帮助你: