发送错误请求的html页面node.js

时间:2012-12-10 17:24:11

标签: node.js http response bad-request

我正在使用node.js构建http服务器,并且我正在尝试为错误请求发送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;
}

正如您所看到的,如果无法打开文件,我会调用始终以writeHead()结尾的\r\n\r\n,然后发送一个html页面。

然而,发生的事情是我只是在浏览器上看到整个响应(标题+正文)(如果重要的话就是chrome)。

1 个答案:

答案 0 :(得分:1)

我认为您忘记了status code的文字表示。

HTTP/1.x 200 OK  
相关问题