/ / Ustawić favicon na serwerze HTTP? - node.js, http, favicon

Ustawić favicon na serwerze HTTP? - node.js, http, favicon

Używam węzła.js Moduł HTTP do stworzenia serwera, i zastanawiam się, jak ustawić favicon (ikonę skrótu) na serwerze HTTP? Przeszukałem to i zobaczyłem, że Express może ustawić favicon, ale nie znalazłem dowolne rozwiązanie HTTP.

Jak to osiągnąć? (Bez migracji do Express)

Odpowiedzi:

5 dla odpowiedzi № 1

Sprowadza się do tego:

  • Jeśli żądana ścieżka jest twoją ulubioną, podaj ją.
  • W przeciwnym razie rób wszystko, co robisz z żądaniami.

O ile nie zmienisz ścieżki do swojego ulubionego w dokumencie HTML, przeglądarki (zwykle) przesyłają żądanie do /favicon.ico ścieżka, aby uzyskać favicon serwera.

To znaczy, służąc swojemu faviconowi /favicon.ico często wystarcza.

Zakładając, że twój favicon znajduje się w ./public/favicon.icoi będą serwowane w /favicon.ico ścieżkę na serwerze, możesz zrobić coś takiego:

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

var server = http.createServer();

// Location of your favicon in the filesystem.
var FAVICON = path.join(__dirname, "public", "favicon.ico");

var server = http.createServer(function(req, res) {
var pathname = url.parse(req.url).pathname;

// If this request is asking for our favicon, respond with it.
if (req.method === "GET" && pathname === "/favicon.ico") {
// MIME type of your favicon.
//
// .ico = "image/x-icon" or "image/vnd.microsoft.icon"
// .png = "image/png"
// .jpg = "image/jpeg"
// .jpeg = "image/jpeg"
res.setHeader("Content-Type", "image/x-icon");

// Serve your favicon and finish response.
//
// You don"t need to call `.end()` yourself because
// `pipe` will do it automatically.
fs.createReadStream(FAVICON).pipe(res);

return;
}

// This request was not asking for our favicon,
// so you can handle it like any other request.

res.end();
});

// Listen on port 3000.
//
// This line is not relevant to this answer, but
// it would feel incomplete otherwise.
server.listen(3000);