2014-01-30 3 views
0

특수 웹 서버에 express와 함께 node.js를 사용하고 있습니다. 그것의 대부분은 실제로 표준 웹 서버가하는 일을 커버하지 않을 것이다. 그러나 작은 부분을 위해 나는 정규 웹 서버처럼 행동해야한다. 그래서 파일을 읽고, 적절한 MIME 형식을 가진 내용을 클라이언트에게 보낸다. 현재 내 코드는 다음과 같습니다.mime type node.js express

app.get('/ui/*', function(req, res) { 
    var file = '../M4Editor/data' + req.url; 
    fs.readFile(file, { encoding: "utf8" }, function(err, data) { 
     if(err) { 
      res.send(404); 
      return; 
     } 

     res.type(mime.lookup(file)); 
     res.send(data.toString()); 
    });  
}); 

mime.lookup이 올바른 결과를 반환합니다. 또한 mime 형식의 res.send (새 버퍼 (data.toString(), 'utf8'))를 사용하여 res.set ('Content-Type', ...), res.header (...) 전에 설정하십시오. 아무리 내가 크롬에서 allways text/html 않습니다. 반환 된 헤더를 검사 할 경우 헤더의 Content-Type 필드도 없습니다.

내가 뭘 잘못하고 있니? 귀하의 조언에 감사드립니다.

+0

'curl -v http : // yourapp/ui/your/path'로 테스트하십시오. 위의 코드는 응답 Content-Type 헤더를 올바르게 설정해야하는 것처럼 보입니다. 그러나 때로는 크롬 도구가 오해의 소지가있는 것들을 강조합니다. –

+0

조언을 주셔서 감사합니다, 그것은 또한 mime-type ive set을 보여주지 못했습니다. 그러나 받아 들여진 응답에 나의 대답을보십시오. – Cromon

답변

0

제 조언, Express static middleware을 사용하지 않으시겠습니까?

app.use('/ui', express.static(__dirname + '../M4Editor/data')); 

404 오류, 캐싱, MIME 유형 등을 처리해야합니다.