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 相关文章推荐
(jQuery,mootools,dojo)使用适合自己的编程别名命名
Sep 14 Javascript
js/jQuery对象互转(快速操作dom元素)
Feb 04 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
May 04 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
webpack中如何加载静态文件的方法步骤
May 18 Javascript
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
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
Protoss魔法科技
2020/03/14 星际争霸
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
php-fpm中max_children的配置
2019/03/15 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
python实现备份目录的方法
2015/08/03 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
公司委托书怎么写
2014/08/02 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
《司马光》教学反思
2016/02/22 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers