• Node实现静态服务器


    1.Node里面是没有Web容器之说的,所以URL上的路径跟实际文件的路径并不是一致,这里我们手动实现一个简单的原生静态服务,让Node能够找到路径的文件,实现静态服务器功能。文件夹的任何文件都能被找到。

    2.比如在index.html加一个图片时,Node的fs去找这个图片,但是WriteHead你就要写这个MIME类型,为image/jpg,虽然不写,Chrome浏览器可以显示(开发者工具可以看到这个1.jpg的Response Headers里不存在 Content-Type),有的浏览器是不能显示的,又比如CSS的文件你不写MIME类型,浏览器是识别不了了。

    3.path模块获得后缀,然后写一个函数case所有情况,写进特定的MIME类型,这里也可以在函数里面再fs读一个写好的json文件,把所有类型都可以对应起来(教程上的小作业)。

    //因为Node路由路径和实际文件路径并不一定一致,没有Web容器的原因,这里我们仿照Web路由的实现
    var http = require("http");
    var url = require("url");
    var fs = require("fs");
    var path = require("path");
    
    http.createServer(function(req, res) {
        //得到用户的路径
        var pathname = url.parse(req.url).pathname;
        if(pathname == "/") {
            pathname = "index.html";
        }
        //拓展名
        var extname = path.extname(pathname);
        // console.log(extname);
        //真的读取这个文件
        //缺点,太智能,但是不能检测是什么类型的文件
        fs.readFile("./static/" + pathname, function(err, data) {
            //data是一个Buffer,二进制的数据流
            if(err) {
                //如果文件不存在,就返回404
                fs.readFile("./static/404.html", function(err, data) {
                    res.writeHead(404,{"Content-type":"text/html;chaset=UTF8"});
                    res.end(data);
                });
                return ;//必须这个,不然会走到下个data
            }
            //MIME类型,就是
            //网页文件:text/html
            //jpg文件:image/jpg
            var  mime = getMIME(extname)
            res.writeHead(200,{"Content-type":mime});
            res.end(data);
        })
    }).listen(3000,"127.0.0.1")
    
    function getMIME(extname) {
        switch (extname) {
            case ".html":
                return "text/html";
                break;
            case ".jpg":
                return "image/jpg";
                break;
            case ".css":
                return "text/css";
                break;
            }
    }
  • 相关阅读:
    <转>反调试技巧总结原理和实现
    反调试功能<IsDebuggerPresent>
    通过取得MAC地址判断是否在VM中
    任何值得拥有的东西
    我的程序里
    吸引力法则之谜——十一条被遗忘的定律
    要成功,请忘掉自尊
    我是个只顾着想,却不去做的人
    现在有12个金币,其中一个有质量问题(或重或轻),还有一个无砝码的天平,让你称三次怎么样找到那个有质量问题的金币?
    惆怅
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7745851.html
Copyright © 2020-2023  润新知