Node.js实现一个HTTP服务器的方法示例


Posted in Javascript onMay 13, 2019

项目地址

http server

题目

设计一个模拟HTTP服务端程序

自己设计一个WEB的程序,监听80端口。支持多客户端连接,能满足客户的HTTP请求(浏览器访问),包括以下功能:

1.基本功能:get、post(带数据请求)、head请求

2.模拟登陆访问,页面redirector功能(设计登陆页面login.html、主页index.html,如果直接访问index.html则跳转到登陆页面,只有登陆后才能打开主页)

3.其他(如cookie)

效果展示

Node.js实现一个HTTP服务器的方法示例

思路

用户打开网址 127.0.0.1:8080 时,客户端发起 get 请求,请求路径为 / ,服务端返回 login.html 页面。

if (request.url === '/') {
 fs.readFile('./login.html', function (err, data) {
  if (!err) {
   response.writeHead(200, { "Content-Type": "text/html;charset=UTF-8" });
   response.end(data)
  } else {
   throw err;
  }
 });
}

当用户试图通过浏览器地址访问 /index 时,服务端会判断请求头是否携带 cookie ,若没有则将请求重定向到 /

if (!request.headers.cookie) {
 response.writeHead(301, { 'Location': '/' })
 response.end()
}

如果有携带 cookie ,则将浏览器重定向到 index.html 页面

window.location.href = '/index'

用户在 login.html 界面输入用户名并点击登录,客户端会携带用户名发起一个 post 请求

let input = {
 name: document.querySelector('.input').value
}
let request = new XMLHttpRequest(); // 新建XMLHttpRequest对象
request.open('POST', '/login', true)
request.send(JSON.stringify(input))

服务端接收参数,设置 cookie

let input = {
 name: document.querySelector('.input').value
}
let request = new XMLHttpRequest(); // 新建XMLHttpRequest对象
request.open('POST', '/login', true)
request.send(JSON.stringify(input))

如果客户端发情 HEAD 请求,只返回相应头

if (request.url === '/getHead') {
 response.writeHead(200);
 response.end()
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 Javascript
js面向对象的写法
Feb 19 Javascript
js图片放大镜效果实现方法详解
Oct 28 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
Vue cli+mui 区域滚动的实例代码
Jan 25 Javascript
React中的render何时执行过程
Apr 13 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
解决layui数据表格Date日期格式的回显Object的问题
Sep 19 Javascript
微信小程序实现多图上传
Jun 19 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 #jQuery
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 #Javascript
JavaScript封闭函数及常用内置对象示例
May 13 #Javascript
vue 表单之通过v-model绑定单选按钮radio
May 13 #Javascript
JS中的函数与对象的创建方式
May 12 #Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 #Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
May 12 #Javascript
You might like
一个php导出oracle库的php代码
2009/04/20 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
js常用代码段收集
2011/10/28 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python按比例随机切分数据的实现
2019/07/11 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
大门门卫岗位职责
2013/11/30 职场文书
项目经理任命书范本
2014/06/05 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang