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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
编写兼容IE和FireFox的脚本
May 18 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
jQuery修改CSS伪元素属性的方法
Jul 30 Javascript
AngularJS指令用法详解
Nov 02 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
Jun 29 Javascript
jquery实现点击弹出对话框
Feb 08 jQuery
使用Typescript和ES模块发布Node模块的方法
May 25 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
vue中提示$index is not defined错误的解决方式
Sep 02 Javascript
原生小程序封装跑马灯效果
Oct 21 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
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
python读写文件操作示例程序
2013/12/02 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python解释器spython使用及原理解析
2019/08/24 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
python实现KNN近邻算法
2020/12/30 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
迷你西餐厅创业计划书范文
2013/12/31 职场文书
秋季运动会稿件
2014/01/30 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
财务管理专业自荐书
2014/09/02 职场文书
营销总监岗位职责
2014/09/16 职场文书
离婚协议书格式
2014/11/21 职场文书
合作意向协议书
2015/01/29 职场文书
周末问候语大全
2015/11/10 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python