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实现节点(div)名称编辑
Dec 17 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
RequireJS使用注意细节
May 15 Javascript
webpack中引用jquery的简单实现
Jun 08 Javascript
JS与jQuery实现隔行变色的方法
Sep 09 Javascript
基于jquery实现多选下拉列表
Aug 02 jQuery
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 Javascript
JavaScript展开操作符(Spread operator)详解
Jul 20 Javascript
vue-devtools的安装和使用步骤详解
Oct 17 Javascript
Node.js API详解之 module模块用法实例分析
May 13 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的FTP学习(四)
2006/10/09 PHP
NOT NULL 和NULL
2007/01/15 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
vuex存储token示例
2019/11/11 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python实现获取某天是某个月中的第几周
2015/02/11 Python
用Python编写简单的定时器的方法
2015/05/02 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
在python中画正态分布图像的实例
2019/07/08 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
英文翻译的自我评价语句
2013/10/04 职场文书
常务副总经理任命书
2014/06/05 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL