Nodejs轻松搭建局域网服务器

一、前言

前端开发经常会遇到移动端调试或者其它设备测试的场景,部署到云服务器上实在是太麻烦,如果可以在局域网直接调试就方便多了,Nodejs较为接近前端,选它来搭建局域网服务器便于上手。

二、代码实现

因为只是要测试前端部分,所以实现的功能是静态文件服务器即可。参考了一下这篇文章,试着写了一个简单的静态文件服务器,实现了基本的路由、静态文件读取、MIME类型支持的功能,直接贴代码:

首先是主程序app.js

var http = require('http');

var url = require('url');

var path = require('path');

var fs = require('fs');

var mime = require('./mime');

//服务器端口号

var port = 8888;

//服务器路径

var root = './your-path';

//默认访问根目录下的"index.html"

var index = 'index.html';

http.createServer(function (request, response) {

var realPath = url.parse(request.url).pathname;

//默认访问根目录下的index.html

if (realPath.charAt(realPath.length - 1) == "/") {

realPath += index;

}

//安全问题,禁止父路径

realPath = realPath.replace(/\.\./g, '');

var realPath = root + realPath;

//获取文件的后缀名,为待会的MIME类型提供支持

var ext = path.extname(realPath);

ext = ext ? ext.slice(1) : 'unknown';

//先判断访问文件是否存在,并返回对应的HTTP状态码,再读取静态文件

fs.exists(realPath, function (exists) {

console.log('path.exists--%s', exists);

if (!exists) {

response.writeHead(404, {

'Content-Type': 'text/plain'

});

response.write("This request URL " + realPath + " was not found on this server.");

response.end();

} else {

fs.readFile(realPath, "binary", function (err, file) {

if (err) {

response.writeHead(500, {

'Content-Type': 'text/plain'

});

response.end(err + '');

} else {

//MIME类型支持

var contentType = mime[ext] || "text/plain";

response.writeHead(200, {

'Content-Type': contentType

});

response.write(file, "binary");

response.end();

}

});

}

});

}).listen(port);

// 终端打印运行信息

console.log('Server running at port:' + port);

然后是支持MIME类型mime.js

var mime = {

"html": "text/html",

"ico": "image/x-icon",

"css": "text/css",

"gif": "image/gif",

"jpeg": "image/jpeg",

"jpg": "image/jpeg",

"js": "text/javascript",

"json": "application/json",

"pdf": "application/pdf",

"png": "image/png",

"svg": "image/svg+xml",

"swf": "application/x-shockwave-flash",

"tiff": "image/tiff",

"txt": "text/plain",

"wav": "audio/x-wav",

"wma": "audio/x-ms-wma",

"wmv": "video/x-ms-wmv",

"xml": "text/xml"

};

module.exports = mime;

至此代码完成,这个静态文件服务器已经能够支持一些常用访问请求了。

运行程序

为了让别的设备能在局域网内访问你的服务器,我们首先要知道你的本机IP。

CMD下输入“ipconfig”,找到“无线局域网适配器 Wi-Fi”:

这里可以看到路由器给你分配的局域网ip地址为 192.168.1.109,确保你要测试的其它设备与服务器在同一局域网后,在浏览器上输入此IP地址加上在app.js 里面设置的端口号就可以访问了(本例为“192.168.1.109:8888”)。

自此局域网服务器搭建完成。

转载请注明出处,欢迎分享

node 请求内网_Nodejs轻松搭建局域网服务器相关推荐

  1. 【计算机网络课程设计】内网穿透、搭建FTP服务器(局域网和广域网)以及对于花生壳发送X11包得一些推测

    搭建FTP服务器.对X11包的推测 FTP概述 一.FTP工作模式及传输模式 FTP工作模式 1.主动模式 2.被动模式 FTP传输模式 1.ASCLL传输模式 2.二进制数据传输模式 二.FTP服务 ...

  2. hsk内网穿透+SERV-U+搭建FTP服务器+并实现外网访问

    转载:https://service.oray.com/question/752.html hsk服务目前的用户量已达1600万以上,广泛应用于网站建设.视频监控.遥感测绘.FTP.VPN.企业OA. ...

  3. 离线/内网环境下搭建vue开发环境

    系列文章目录 第一讲 离线/内网环境下搭建vue开发环境 第二讲 内网环境运行maven项目 目录 外网环境搭建 一.安装nodeJS 二.安装vue依赖包 内网环境正式开始 准备工作: 一.安装no ...

  4. 树莓派3 利用frp内网穿透web搭建 -- bt下载机的应用

                                    树莓派3 利用frp内网穿透web搭建 -- bt下载机的应用 请参考我前面写的博客:http://blog.csdn.net/wang ...

  5. frp内网穿透并搭建配置使用

    一文搞懂frp内网穿透并搭建配置使用 原文链接 ->https://developer.aliyun.com/article/853534?spm=ding_open_doc.document. ...

  6. java http 服务器搭建_基于http.server搭建局域网服务器过程解析

    不知道大家有没有遇到过这样的情况, 在做项目或者研发的时候,迫切想要将一个文件传输给另一台电脑,却找不到u盘,于是麻烦的通过登陆qq.微信等社交软件 ,或者邮箱等工具进行传输,十分麻烦,让人苦恼.都说 ...

  7. frp点对点udp方式内网穿透ssh,不走服务器流量

    frp点对点udp方式内网穿透ssh,不走服务器流量 (2019 年 5 月 30 日) frp ssh 安全连接和服务器安全设置 (2019 年 5 月 29 日) frp 控制台监控dashboa ...

  8. FRP内网穿透映射本地内网80端口到云服务器

    FRP内网穿透映射本地内网80端口到云服务器 如题,我的配置中本地服务器和云服务器都为ubuntu20.04,但CentOS同样适用. PS:怎么把网页部署到本地80端口请找别的教程,本文重点在内网穿 ...

  9. 内网入口——代理搭建端口转发

    在内网渗透过程中经常会遇到搭建代理和端口转发的情况,本文记录一些常用工具的使用方法和典型应用场景,便于查阅. 文章目录 代理搭建&端口转发 1.EW 2.Venom 3.Stowaway 4. ...

  10. 内网穿透从搭建到溯源

    目录 背景 内网穿透及溯源 网络层隧道搭建 传输层隧道搭建 应用层隧道搭建 测试通信 案例 总结 背景 在攻防博弈这个永久的话题中,永远不会缺少一个重要角色即内网穿透.当渗透测试人员在进入内网,需要扩 ...

最新文章

  1. 在CentOS 6.3 64bit上安装FTP服务器vsftpd 2.2.2
  2. python numpy模块
  3. html ie浏览器视频无法播放视频,HTML5视频以Chrome格式播放,但不播放IE9
  4. apache虚拟机配置步骤和修改访问端口
  5. ThinkPHP跨控制器调用方法
  6. Kafka消息序列化和反序列化(上)
  7. java合并单元格同时导出excel
  8. vue 外部方法调用内部_vue函数内部调用外部函数,报错外部函数不是函数
  9. POM.xml红叉解决方法
  10. update和delete操作忘加where条件导致全表更新的处理方法
  11. java连接hbase_HBase实战 | 05405.15.0Spark2使用HBaseSpark访问HBase
  12. linux 服务器(CentOS7)搭建PHP环境+SSH配置+服务器文件上传配置
  13. 前端flv.js设置缓冲时间和大小_不可不知的 WEB 前端网站优化 —— 雅虎 34 条军规...
  14. python 计算时间重叠_python whilepython计算两个矩形框重合百分比的实例
  15. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) A Is it rated?
  16. mysql sql语句面试经典50题_经典sql面试及答案(50)
  17. Android教程 - - adb工具包的安装
  18. Awvs 12.x安装及使用教程超详细(包括录制脚本)
  19. HTML基础入门 第1天课堂笔记
  20. Exchange2010安装指南

热门文章

  1. Matlab将散点绘制为平滑曲线的简单方法
  2. C++ 字符串逆序输出
  3. 高雅复古立式钢琴音源 Native Instruments The Gentleman Kontakt
  4. Chrome启动参数大全
  5. fw313r手机登录_迅捷fw326r路由器手机登录
  6. jar 坐标系转换工具_谷歌百度经纬度转换
  7. 因子分解机(FM,FFM,DeepFM,libfm,xlearn)
  8. Android与iPhone的对比
  9. 播放RTMP协议的流媒体的两种选择
  10. win7 计算器 android,win7计算器