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

发送错误请求的html页面node.js,node.js,http,response,bad-request,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) {

我正在使用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;
}
功能响应(请求、套接字){
log(“请求”+请求[“url”]+”);
fs.readFile(请求[“url”],请求[“编码”],函数(错误,文件){
如果(错误){
console.log(错误);
写头(套接字,请求[“版本”],404,“文本/html”,空);
socket.write(notFound(请求[“url]”));
socket.end();
}否则{
fs.stat(请求[“url”],函数(err,stats){
写头(套接字、请求、200、统计)
socket.write(文件,请求[“编码]);
socket.end();
});
}
});
}
未找到函数(url){
返回“\
\
404找不到\
\
\
找不到\
在此服务器上找不到请求的URL“+URL+”。

\
\ EX4服务器\ \ " } 函数写头(套接字、请求、代码、状态){ socket.write(请求[“版本”]+“+代码+”+“\r\n”); socket.write(“日期:“+getDate()+”\r\n”); if(stats!=null){ socket.write(“内容长度:“+stats.size+”\r\n”); socket.write(“上次修改:+stats.mtime+”\r\n”); } socket.write(“服务器:EX4”+“\r\n”); socket.write(“内容类型:”+请求[“内容类型”]+”\r\n”); socket.write(“\r\n”); 返回; }
如您所见,如果文件无法打开,我将调用
writeHead()
,它总是以
\r\n\r\n
结尾,然后发送一个html页面


然而,发生的事情是,我只是在我的浏览器上看到了整个响应(标题+正文)(如果有关系的话,请使用chrome)。

我想您忘记了您的浏览器的文本表示形式


您为什么不使用
http
模块?
HTTP/1.x 200 OK