我使用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
所在的同一文件夹中。
这个问题:Set favicon in HTTP server?不适合我,因为答案中的答案和代码已被接受,因为它对我不起作用。
答案 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)提供静态图像的示例帮助你: