2016-09-17 5 views
2

私はNode.js HTTPモジュールを使用してサーバーを作成していますが、私はどのようにHTTPサーバーでfavicon(ショートカットアイコン)を設定するのでしょうか?私はこれを調べて、Expressがfaviconを設定できることを確認しましたが、HTTPの解決策は見つかりませんでした。HTTPサーバーでfaviconを設定していますか?

どうすればよいですか? (エクスプレスへの移行なし)

+1

あなたはあなたの質問を明確にする必要があります。 「ファビコンを設定する」とはどういう意味ですか?私にとって、これは「提供する」ことを意味し、明らかに同じことを@noisypixyは考えました。 –

+0

ファビコンを「提供していない」場合は、HTML側に関連があると思われます。 – noisypixy

+0

@philippe_b faviconは、HTMLページの本文に表示することを意味します。ファビコンを「設定する」とは、ファビコンが表示されるタブの左側にファビコンを表示することを意味します。 – baranskistad

答えて

4

それはこれに沸く:

  • 要求されたパスは、あなたのファビコンのものである場合は、それを提供します。
  • それ以外の場合は、リクエストで何をしていてもかまいません。

あなたがHTML文書にあなたのファビコンへのパスを変更しない限り、ブラウザは、(通常は)サーバーのファビコンを得るために/favicon.icoパスへの要求を行います。

つまり、あなたのファビコンに/favicon.icoを提供することは、しばしば十分です。

あなたのファビコンが./public/favicon.icoに位置しており、サーバーに/favicon.icoパスに提供されます、あなたはこのような何かを行うことができますと仮定:

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); 
+0

私はfaviconを設定しようとしていますが、提供していません。 – baranskistad

+3

@bjskistadもしあなたが望むものではないとしても、私はこの答えが妥当であると思っています。あなたがそれをdownvoteする場合、私はあなたにこれを元に戻すよう助言します。 –

+0

私はそれをもっと初心者にやさしくするために編集しました。私は特にdownvotingを気にしない。 – noisypixy

関連する問題