Comment définir un type MIME avant d'envoyer un fichier dans Node.js?

Lors de l'envoi de scripts depuis mon serveur Node.js vers le navigateur, dans Google Chrome, je reçois cet avertissement:

Ressource interprétée sous forme de script mais transférée avec texte / texte MIME

J'ai parlé de Google et j'ai découvert que c'était un problème du côté du serveur, je pense que je devrais définir le type MIME correct avant de les envoyer. Voici le gestionnaire du serveur HTTP:

var handler = function(req, res) { url = convertURL(req.url); //I implemented "virtual directories", ignore this. if (okURL(url)) //If it isn't forbidden (eg forbidden/passwd.txt) { fs.readFile (url, function(err, data) { if (err) { res.writeHead(404); return res.end("File not found."); } //I think that I need something here. res.writeHead(200); res.end(data); }); } else //The user is requesting an out-of-bounds file. { res.writeHead(403); return res.end("Forbidden."); } } 

Question: Comment corriger mon code côté serveur pour configurer correctement le type MIME?

(Remarque: J'ai déjà trouvé https://github.com/broofa/node-mime , mais cela ne me permet de déterminer le type MIME que de ne pas le "définir".)

Je l'ai compris!

Grâce au lien @ rdrey et à ce module de noeud, j'ai réussi à définir correctement le type MIME de la réponse, comme ceci:

 function handler(req, res) { var url = convertURL(req.url); if (okURL(url)) { fs.readFile(url, function(err, data) { if (err) { res.writeHead(404); return res.end("File not found."); } res.setHeader("Content-Type", mime.lookup(url)); //Solution! res.writeHead(200); res.end(data); }); } else { res.writeHead(403); return res.end("Forbidden."); } } 

Recherchez google pour l'en-tête HTTP Content-Type.

Ensuite, découvrez comment le configurer avec http://expressjs.com/api.html#res.set

Oups, l'exemple inclut votre réponse;)

Il suffit de vérifier la fin du fichier, s'il est .js , définissez le type MIME approprié pour rendre les navigateurs heureux.

EDIT: Dans le cas où il s'agit d'un noeud pur, sans exprimer, regardez ici: http://nodejs.org/api/http.html#http_response_setheader_name_value

J'ai eu des problèmes pour utiliser votre fonction de gestionnaire car les fonctions convertURL et okURL ne sont pas définies. J'ai modifié le code un peu et j'ai terminé comme ça

 function handler(req, res) { // /home/juan/Documentos/push-api-demo is the path of the root directory of the server var url = '/home/juan/Documentos/push-api-demo' + req.url; var file_exists = fs.existsSync(url); if (file_exists) { fs.readFile(url, function(err, data) { if (err) { res.writeHead(404); return res.end("File not found."); } res.setHeader("Content-Type", mime.lookup(url)); res.writeHead(200); res.end(data); }); } else { res.writeHead(403); return res.end("Forbidden."); } }