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 相关文章推荐
offsetParent 算法分析
Apr 05 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
javascript学习笔记(十) js对象 继承
Jun 19 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
微信小程序实现图片轮播及文件上传
Apr 07 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
快速搭建React的环境步骤详解
Nov 06 Javascript
浅谈Vue网络请求之interceptors实际应用
Feb 28 Javascript
灵活使用console让js调试更简单的方法步骤
Apr 23 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 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基础知识:类与对象(1)
2006/12/13 PHP
php开发工具之vs2005图解
2008/01/12 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
python轮询机制控制led实例
2020/05/03 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python