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 相关文章推荐
List the Codec Files on a Computer
Jun 18 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
jquery选择器-根据多个属性选择示例代码
Oct 21 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
最细致的vue.js基础语法 值得收藏!
Nov 03 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 Javascript
为什么我们要做三份 Webpack 配置文件
Sep 18 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
Dec 01 Javascript
解决在layer.open中使用时间控件laydate失败的问题
Sep 11 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
Jan 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 Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php 邮件发送问题解决
2014/03/22 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
详解Python import方法引入模块的实例
2017/08/02 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
个人诉讼委托书范本
2014/10/17 职场文书
高考学习决心书
2015/02/04 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
python 中yaml文件用法大全
2021/07/04 Python
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android