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 为label标签和div标签赋值的方法
Aug 08 Javascript
深入分析js的冒泡事件
Dec 05 Javascript
jquery实现的仿天猫侧导航tab切换效果
Aug 24 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
jquery实现多次上传同一张图片
Jan 09 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
vue获取验证码倒计时组件
Aug 26 Javascript
js canvas实现星空连线背景特效
Nov 01 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 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程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
python学习 流程控制语句详解
2016/06/01 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
领导干部考察材料
2014/02/08 职场文书
学习退步检讨书
2014/09/28 职场文书
现货白银电话营销话术
2015/05/29 职场文书
文化大革命观后感
2015/06/17 职场文书
答谢酒会主持词
2015/07/02 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
Android自定义双向滑动控件
2022/04/19 Java/Android
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS