Node.js實(shí)現(xiàn)一個(gè)HTTP服務(wù)器的方法示例
項(xiàng)目地址
題目
設(shè)計(jì)一個(gè)模擬HTTP服務(wù)端程序
自己設(shè)計(jì)一個(gè)WEB的程序,監(jiān)聽80端口。支持多客戶端連接,能滿足客戶的HTTP請(qǐng)求(瀏覽器訪問),包括以下功能:
1.基本功能:get、post(帶數(shù)據(jù)請(qǐng)求)、head請(qǐng)求
2.模擬登陸訪問,頁面redirector功能(設(shè)計(jì)登陸頁面login.html、主頁index.html,如果直接訪問index.html則跳轉(zhuǎn)到登陸頁面,只有登陸后才能打開主頁)
3.其他(如cookie)
效果展示
思路
用戶打開網(wǎng)址 127.0.0.1:8080
時(shí),客戶端發(fā)起 get 請(qǐng)求,請(qǐng)求路徑為 /
,服務(wù)端返回 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; } }); }
當(dāng)用戶試圖通過瀏覽器地址訪問 /index
時(shí),服務(wù)端會(huì)判斷請(qǐng)求頭是否攜帶 cookie ,若沒有則將請(qǐng)求重定向到 /
。
if (!request.headers.cookie) { response.writeHead(301, { 'Location': '/' }) response.end() }
如果有攜帶 cookie ,則將瀏覽器重定向到 index.html 頁面
window.location.href = '/index'
用戶在 login.html 界面輸入用戶名并點(diǎn)擊登錄,客戶端會(huì)攜帶用戶名發(fā)起一個(gè) post 請(qǐng)求
let input = { name: document.querySelector('.input').value } let request = new XMLHttpRequest(); // 新建XMLHttpRequest對(duì)象 request.open('POST', '/login', true) request.send(JSON.stringify(input))
服務(wù)端接收參數(shù),設(shè)置 cookie
let input = { name: document.querySelector('.input').value } let request = new XMLHttpRequest(); // 新建XMLHttpRequest對(duì)象 request.open('POST', '/login', true) request.send(JSON.stringify(input))
如果客戶端發(fā)情 HEAD 請(qǐng)求,只返回相應(yīng)頭
if (request.url === '/getHead') { response.writeHead(200); response.end() }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解使用Typescript開發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置)
本篇文章主要介紹了詳解使用Typescript開發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10Node.js中Express框架使用axios同步請(qǐng)求(async+await)實(shí)現(xiàn)方法
這篇文章主要介紹了Node.js中Express框架使用axios同步請(qǐng)求(async+await)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了express框架使用異步交互axios模塊實(shí)現(xiàn)同步請(qǐng)求的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2023-04-04nodejs 實(shí)現(xiàn)模擬form表單上傳文件
使用nodejs來模擬form表單進(jìn)行文件上傳,可以同時(shí)上傳多個(gè)文件。2014-07-07Nodejs中的計(jì)時(shí)器(setTimeout?setIntervals?etImmediate)使用案例解析
這篇文章主要介紹了Nodejs中的計(jì)時(shí)器(setTimeout?setIntervals?etImmediate)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06nodejs中簡(jiǎn)單實(shí)現(xiàn)Javascript Promise機(jī)制的實(shí)例
這篇文章主要介紹了nodejs中簡(jiǎn)單實(shí)現(xiàn)Javascript Promise機(jī)制的實(shí)例,本文在nodejs中簡(jiǎn)單實(shí)現(xiàn)一個(gè)promise/A 規(guī)范,需要的朋友可以參考下2014-12-12Node.js實(shí)現(xiàn)批量下載圖片簡(jiǎn)單操作示例
這篇文章主要介紹了Node.js實(shí)現(xiàn)批量下載圖片簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了node.js批量下載圖片的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-01-01npm?i報(bào)錯(cuò)以及解決方案實(shí)戰(zhàn)案例
npm在前端開發(fā)流程中提供了非常完善的自動(dòng)化工具鏈,但是同樣由于其復(fù)雜性導(dǎo)致有很多奇奇怪怪的問題,下面這篇文章主要給大家介紹了關(guān)于npm?i報(bào)錯(cuò)以及解決方案的相關(guān)資料,需要的朋友可以參考下2022-07-07