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 相关文章推荐
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
jQuery 渐变下拉菜单
Dec 15 Javascript
一个简单的瀑布流效果(主体形式自写)
May 27 Javascript
获取表单控件原始(初始)值的方法
Aug 21 Javascript
详解JavaScript对W3C DOM模版的支持情况
Jun 16 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
Aug 31 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
JS中使用DOM来控制HTML元素
Jul 31 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
ES6中Array.includes()函数的用法
Sep 20 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水印技术
2007/02/14 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
javascript 函数速查表
2010/02/07 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python中itertools的用法详解
2020/02/07 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
学校司机岗位职责
2013/11/14 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
班主任对学生的评语
2014/04/26 职场文书
三问三解心得体会
2014/09/05 职场文书
长城导游词
2015/01/30 职场文书
工作态度怎么写
2015/06/25 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书