一、页面效果
二、主要代码
var http = require('http')
var fs = require('fs')
var path = require('path')
var url = require('url')
var mime = {
'.html': 'text/html',
'.css': 'text/css',
'.js': 'text/javascript',
'.jpg': 'image/jpeg',
}
var server = http.createServer()
// 3. 监听请求事件
server.on('request', (req, res) => {
var author = req.headers['authorization']
if (author) {
var area = author.slice(6)
var parts = new Buffer(area, 'base64').toString().split(':')
if (parts[0] == 'zhanghao' && parts[1] == 'mima') {
var pathname = url.parse(req.url).pathname
pathname = pathname == '/' ? '/index.html' : pathname
var extname = path.extname(pathname)
console.log(extname, 'extname')
if (extname) {
//fs.readFile读取的是完整路径,如果本机开发相对路径是可以了,但是发到测试就不行了,必须是绝对路径
//显而易见,fs模块读取文件的相对路径是以启动server.js的位置为基准的,而不是以server.js文件的位置。
//启动脚本的方式可以有多种,所以nodejs官方推荐在使用fs模块读取文件时使用绝对路径,而不是相对路径。
fs.readFile('../dist' + pathname, (err, data) => {
if (err) {
console.log(err)
return
}
res.writeHead(200, { 'Content-type': `${mime[extname]};charset=utf-8` })
res.write(data)
res.end()
})
}
} else {
res.setHeader('WWW-Authenticate', 'Basic realm="Secure Area"')
res.writeHead(401)
return res.end()
}
} else {
res.setHeader('WWW-Authenticate', 'Basic realm="Secure Area"')
res.writeHead(401)
return res.end()
}
})
server.listen(8082, () => {
console.log('服务器启动成功')
})
链接: https://blog.csdn.net/Carrie_zzz/article/details/80248298
链接: https://blog.csdn.net/k358971707/article/details/78775141
链接: https://blog.csdn.net/weixin_49456098/article/details/119650156?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-119650156-blog-72025776.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-119650156-blog-72025776.pc_relevant_paycolumn_v3&utm_relevant_index=2
链接: https://blog.csdn.net/g1167389592504/article/details/125077757
链接: https://blog.csdn.net/qq_63654439/article/details/123389293
链接: https://blog.csdn.net/weixin_53072519/article/details/119480206