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 相关文章推荐
JQuery最佳实践之精妙的自定义事件
Aug 11 Javascript
JavaScript中链式调用之研习
Apr 07 Javascript
判断某个字符在一个字符串中是否存在的js代码
Feb 28 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 Javascript
vue.js获得当前元素的文字信息方法
Mar 09 Javascript
详解Angular如何正确的操作DOM
Jul 06 Javascript
小程序云函数调用API接口的方法
May 17 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
layer 关闭指定弹出层的例子
Sep 25 Javascript
Node.js API详解之 zlib模块用法分析
May 19 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简洁函数小结
2011/08/12 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
类之Prototype.js学习
2007/06/13 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
python实现录音小程序
2020/10/26 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python和Sublime整合过程图示
2019/12/25 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
python 实现超级玛丽游戏
2020/11/25 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
Java基础面试题
2012/11/02 面试题
一套Delphi的笔试题一
2016/02/14 面试题
超级搞笑检讨书
2014/01/15 职场文书
聚美优品广告词改编
2014/03/14 职场文书
考核评语大全
2014/04/29 职场文书
活动总结书
2014/05/08 职场文书
心理健康日活动总结
2014/05/08 职场文书
质量保证书
2015/01/17 职场文书
会计实训总结范文
2015/08/03 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
APP界面设计技巧和注意事项
2022/04/29 杂记