2012-12-10 23 views
0

我正在使用node.js構建http服務器,並試圖發送一個html頁面來請求錯誤。這裏是我的代碼:發送html頁面的錯誤請求,node.js

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; 
} 

正如你可以看到,如果文件不能打開我打電話writeHead()總是與\r\n\r\n結束,然後我送一個HTML頁面。

但是,會發生什麼情況是我只能在瀏覽器中看到整個響應(標題+正文)(如果它很重要,請使用chrome)。

+0

你爲什麼不使用'http'模塊? –

回答

1

我想你忘記了你的status code的文字表示。

HTTP/1.x 200 OK