Node.js實(shí)現(xiàn)一個(gè)HTTP服務(wù)器的方法示例
項(xiàng)目地址
題目
設(shè)計(jì)一個(gè)模擬HTTP服務(wù)端程序
自己設(shè)計(jì)一個(gè)WEB的程序,監(jiān)聽(tīng)80端口。支持多客戶端連接,能滿足客戶的HTTP請(qǐng)求(瀏覽器訪問(wèn)),包括以下功能:
1.基本功能:get、post(帶數(shù)據(jù)請(qǐng)求)、head請(qǐng)求
2.模擬登陸訪問(wèn),頁(yè)面redirector功能(設(shè)計(jì)登陸頁(yè)面login.html、主頁(yè)index.html,如果直接訪問(wèn)index.html則跳轉(zhuǎn)到登陸頁(yè)面,只有登陸后才能打開(kāi)主頁(yè))
3.其他(如cookie)
效果展示

思路
用戶打開(kāi)網(wǎng)址 127.0.0.1:8080 時(shí),客戶端發(fā)起 get 請(qǐng)求,請(qǐng)求路徑為 / ,服務(wù)端返回 login.html 頁(yè)面。
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)用戶試圖通過(guò)瀏覽器地址訪問(wèn) /index 時(shí),服務(wù)端會(huì)判斷請(qǐng)求頭是否攜帶 cookie ,若沒(méi)有則將請(qǐng)求重定向到 / 。
if (!request.headers.cookie) {
response.writeHead(301, { 'Location': '/' })
response.end()
}
如果有攜帶 cookie ,則將瀏覽器重定向到 index.html 頁(yè)面
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開(kāi)發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置)
本篇文章主要介紹了詳解使用Typescript開(kāi)發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
Node.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-04
nodejs 實(shí)現(xiàn)模擬form表單上傳文件
使用nodejs來(lái)模擬form表單進(jìn)行文件上傳,可以同時(shí)上傳多個(gè)文件。2014-07-07
Nodejs中的計(jì)時(shí)器(setTimeout?setIntervals?etImmediate)使用案例解析
這篇文章主要介紹了Nodejs中的計(jì)時(shí)器(setTimeout?setIntervals?etImmediate)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
nodejs中簡(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-12
Node.js實(shí)現(xiàn)批量下載圖片簡(jiǎn)單操作示例
這篇文章主要介紹了Node.js實(shí)現(xiàn)批量下載圖片簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了node.js批量下載圖片的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-01-01
npm?i報(bào)錯(cuò)以及解決方案實(shí)戰(zhàn)案例
npm在前端開(kāi)發(fā)流程中提供了非常完善的自動(dòng)化工具鏈,但是同樣由于其復(fù)雜性導(dǎo)致有很多奇奇怪怪的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于npm?i報(bào)錯(cuò)以及解決方案的相關(guān)資料,需要的朋友可以參考下2022-07-07
npm鏡像源證書(shū)過(guò)期的問(wèn)題解決
因?yàn)閚pm官方鏡像在國(guó)內(nèi)訪問(wèn)很慢,我們基本上都會(huì)選擇切換到國(guó)內(nèi)的一些npm鏡像,本文主要介紹了npm鏡像源證書(shū)過(guò)期的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

