2012-12-10 3 views
0

node.js를 사용하여 http 서버를 구축 중이며 잘못된 요청으로 html 페이지를 보내려고합니다. 당신이 볼 수 있듯이 파일을 열 수없는 경우잘못된 요청 인 node.js에 대한 html 페이지 보내기

function respond(request, socket) { 
    console.log("Request for " + request["url"] + "."); 
    fs.readFile(request["url"], request["encoding"], function(error, file) { 
     if(error) { 
      console.log(error); 
      writeHead(socket,request["version"],404,"text/html",null); 
      socket.write(notFound(request["url"])); 
      socket.end(); 
     } else { 
      fs.stat(request["url"],function (err,stats) { 
       writeHead(socket,request,200,stats) 
       socket.write(file, request["encoding"]); 
       socket.end(); 
      }); 
     } 
    }); 
} 

function notFound(url) { 
return "<html> \ 
    <head> \ 
    <title>404 Not Found</title> \ 
    </head> \ 
    <body> \ 
    <h1>Not Found</h1> \ 
    <p>The requested URL " + url + " was not found on this server.</p> \ 
    <hr> \ 
    <address>EX4 Server</address> \ 
    </body> \ 
    </html>" 
} 

function writeHead(socket, request, code, stats) { 
    socket.write(request["version"] + " " + code + " " + "\r\n"); 
    socket.write("Date: " + getDate() + "\r\n"); 
    if (stats != null) { 
     socket.write("Content-Length: " + stats.size + "\r\n"); 
     socket.write("Last-Modified: " + stats.mtime + "\r\n"); 
    } 
    socket.write("Server: EX4" + "\r\n"); 
    socket.write("Content-Type: " + request["contentType"] + "\r\n"); 
    socket.write("\r\n"); 
    return; 
} 

, 나는 항상 \r\n\r\n로 끝나는 writeHead()를 호출 한 후 나는 HTML 페이지를 보내 : 여기에 내 코드입니다.

그러나 브라우저에서 전체 응답 (헤더 + 본문) (Chrome이 중요한 경우)이 표시됩니다.

+0

왜 'http'모듈을 사용하지 않습니까? –

답변

1

status code의 텍스트 표현을 잊어 버린 것 같습니다.

HTTP/1.x 200 OK 
관련 문제