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 相关文章推荐
Javascript中对象继承的实现小例
May 12 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
jQuery 选择器详解
Jan 19 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
Feb 10 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
解决layui动态添加的元素click等事件触发不了的问题
Sep 20 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 Javascript
Angular进行简单单元测试的实现方法实例
Aug 16 Javascript
基于vue中的scoped坑点解说
Sep 04 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 jQuery
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 加密解密内部算法
2010/04/22 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
javascript读取RSS数据
2007/01/20 Javascript
JavaScript库 开发规则
2009/01/31 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
Linux操作面试题
2015/02/11 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
2014年效能监察工作总结
2014/11/21 职场文书
南京大屠杀观后感
2015/06/02 职场文书
六一儿童节致辞
2015/07/31 职场文书
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers