日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HTTP那些小事

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP那些小事 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是一篇信息整理文章,可以當(dāng)作工具來(lái)看

HTTP全稱是超文本傳輸協(xié)議,構(gòu)建于TCP之上,屬于應(yīng)用層協(xié)議。

http通信有什么問(wèn)題?

1.1 可能被竊聽(tīng)

  • HTTP 本身不具備加密的功能,HTTP 報(bào)文使用明文方式發(fā)送
  • 由于互聯(lián)網(wǎng)是由聯(lián)通世界各個(gè)地方的網(wǎng)絡(luò)設(shè)施組成,所有發(fā)送和接收經(jīng)過(guò)某些設(shè)備的數(shù)據(jù)都可能被截獲或窺視。(例如大家都熟悉的抓包工具:Wireshark),即使經(jīng)過(guò)加密處理,也會(huì)被窺視是通信內(nèi)容,只是可能很難或者無(wú)法破解出報(bào)文的信息而已

1.2 認(rèn)證問(wèn)題

  • 無(wú)法確認(rèn)你發(fā)送到的服務(wù)器就是真正的目標(biāo)服務(wù)器(可能服務(wù)器是偽裝的)
  • 無(wú)法確定返回的客戶端是否是按照真實(shí)意圖接收的客戶端(可能是偽裝的客戶端)
  • 無(wú)法確定正在通信的對(duì)方是否具備訪問(wèn)權(quán)限,Web 服務(wù)器上某些重要的信息,只想發(fā)給特定用戶即使是無(wú)意義的請(qǐng)求也會(huì)照單全收。無(wú)法阻止海量請(qǐng)求下的 DoS 攻擊(Denial of Service,拒絕服務(wù)攻擊)。

1.3 可能被篡改

請(qǐng)求或響應(yīng)在傳輸途中,遭攻擊者攔截并篡改內(nèi)容的攻擊被稱為中間人攻擊(Man-in-the-Middle attack,MITM)

HTTPS如何解決上述三個(gè)問(wèn)題

HTTPS是在通信接口部分用 TLS(Transport Layer Security)協(xié)議。

SSL 和 TLS 的區(qū)別

  • 傳輸層安全性協(xié)議(英語(yǔ):Transport Layer Security,縮寫(xiě)作 TLS),及其前身安全套接層(Secure Sockets Layer,縮寫(xiě)作 SSL)是一種安全協(xié)議,目的是為互聯(lián)網(wǎng)通信,提供安全及數(shù)據(jù)完整性保障。
  • 網(wǎng)景公司(Netscape)在1994年推出首版網(wǎng)頁(yè)瀏覽器,網(wǎng)景導(dǎo)航者時(shí),推出HTTPS協(xié)議,以SSL進(jìn)行加密,這是SSL的起源。
  • IETF將SSL進(jìn)行標(biāo)準(zhǔn)化,1999年公布第一版TLS標(biāo)準(zhǔn)文件。隨后又公布RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。以下就簡(jiǎn)稱SSL
  • TLS是SSL的標(biāo)準(zhǔn). HTTPS 就是 HTTP + SSL

SSL 協(xié)議

HTTPS 協(xié)議的主要功能基本都依賴于 TLS/SSL 協(xié)議,TLS/SSL 的功能實(shí)現(xiàn)主要依賴于三類基本算法:散列函數(shù) 、對(duì)稱加密和非對(duì)稱加密,其利用非對(duì)稱加密實(shí)現(xiàn)身份認(rèn)證和密鑰協(xié)商,對(duì)稱加密算法采用協(xié)商的密鑰對(duì)數(shù)據(jù)加密,基于散列函數(shù)驗(yàn)證信息的完整性。

1.1 對(duì)稱加密

  • 常見(jiàn)的有 AES-CBC、DES、3DES、AES-GCM等,相同的密鑰可以用于信息的加密和解密,掌握密鑰才能獲取信息,能夠防止信息竊聽(tīng),通信方式是1對(duì)1;
  • 對(duì)稱加密需要共享相同的密碼,密碼的安全是保證信息安全的基礎(chǔ),服務(wù)器和多 個(gè)客戶端通信,需要維持多個(gè)密碼記錄,且缺少修改密碼的機(jī)制;
  • 優(yōu)點(diǎn):算法公開(kāi)、計(jì)算量小、加密速度快、加密效率高。
  • 缺點(diǎn):交易雙方都使用同樣鑰匙,安全性得不到保證。

1.2 非對(duì)稱加密技術(shù)

  • 即常見(jiàn)的 RSA 算法,還包括 ECC、DH 等算法,算法特點(diǎn)是,密鑰成對(duì)出現(xiàn),一般稱為公鑰(公開(kāi))和私鑰(保密),公鑰加密的信息只能私鑰解開(kāi),私鑰加密的信息只能公鑰解開(kāi)。因此掌握公鑰的不同客戶端之間不能互相解密信息,只能和掌握私鑰的服務(wù)器進(jìn)行加密通信,服務(wù)器可以實(shí)現(xiàn)1對(duì)多的通信,客戶端也可以用來(lái)驗(yàn)證掌握私鑰的服務(wù)器身份。
  • 非對(duì)稱加密的特點(diǎn)是信息傳輸一對(duì)多,服務(wù)器只需要維持一個(gè)私鑰就能夠和多個(gè)客戶端進(jìn)行加密通信,但服務(wù)器發(fā)出的信息能夠被所有的客戶端解密,且該算法的計(jì)算復(fù)雜,加密速度慢。

1.3 完整性驗(yàn)證算法

  • 常見(jiàn)的有 MD5、SHA1、SHA256,該類函數(shù)特點(diǎn)是函數(shù)單向不可逆、對(duì)輸入非常敏感、輸出長(zhǎng)度固定,針對(duì)數(shù)據(jù)的任何修改都會(huì)改變散列函數(shù)的結(jié)果,用于防止信息篡改并驗(yàn)證數(shù)據(jù)的完整性;
  • 在信息傳輸過(guò)程中,散列函數(shù)不能單獨(dú)實(shí)現(xiàn)信息防篡改,因?yàn)槊魑膫鬏?#xff0c;中間人可以修改信息之后重新計(jì)算信息摘要,因此需要對(duì)傳輸?shù)男畔⒁约靶畔⒄M(jìn)行加密;

1.4 工作方式

結(jié)合三類算法的特點(diǎn),TLS 的基本工作方式是

  • 客戶端使用非對(duì)稱加密與服務(wù)器進(jìn)行通信,實(shí)現(xiàn)身份驗(yàn)證并協(xié)商對(duì)稱加密使用的密鑰
  • 然后對(duì)稱加密算法采用協(xié)商密鑰對(duì)信息以及信息摘要進(jìn)行加密通信,不同的節(jié)點(diǎn)之間采用的對(duì)稱密鑰不同,從而可以保證信息只能通信雙方獲取。

1.5 SSL協(xié)議構(gòu)成

  • 第一層是記錄協(xié)議(Record Protocol), 用于定義傳輸格式。
  • 第二層握手協(xié)議(Handshake Protocol),它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開(kāi)始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。

https服務(wù)器

在創(chuàng)業(yè)HTTPS服務(wù)器之前,服務(wù)器首先需要?jiǎng)?chuàng)建公鑰、私鑰及證書(shū),步驟如下

2.1 創(chuàng)建私鑰

openssl genrsa -out privatekey.pem 1024 復(fù)制代碼

2.2 創(chuàng)建證書(shū)簽名請(qǐng)求(Certificate Signing Request)文件

openssl req -new -key privatekey.pem -out certrequest.csr 復(fù)制代碼

2.3 獲取證書(shū)

證書(shū)應(yīng)該是一個(gè)經(jīng)過(guò)證書(shū)授證中心簽名的文件,該證書(shū)文件內(nèi)包含了服務(wù)器端提供的公鑰以及證書(shū)的辦法機(jī)構(gòu)等信息。

openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem 復(fù)制代碼

2.4 獲取證書(shū)

在具備了證書(shū)文件后,可以使用該證書(shū)文件創(chuàng)建一個(gè)pfx文件。 所謂pfx文件,是指該文件內(nèi)容必須符合公鑰加密技術(shù)12號(hào)標(biāo)準(zhǔn)。

openssl pkcs12 -export -in certificate.pem -inkey privatekey.pem -out certificate.pfx 復(fù)制代碼

2.5 創(chuàng)建服務(wù)器

https.createServer(options,[requestListener]); 復(fù)制代碼
  • pfx 私鑰、公鑰以及證書(shū)
  • key 私鑰
  • passphrase 為私鑰指定密碼
  • cert 公鑰
  • ca 證書(shū),用于指定一組證書(shū),默認(rèn)屬性值為幾個(gè)著名的證書(shū)授權(quán)中心,例如VerlSign
  • crl 指定證書(shū)吊銷(xiāo)主
let https = require('https'); let fs = require('fs'); let path = require('path'); let key = fs.readFileSync(path.join(__dirname, 'privatekey.pem')); let cert = fs.readFileSync(path.join(__dirname, 'certificate.pem')); let opts = {key,cert }; let server = https.createServer(opts, function (req, res) {console.log(req.url);if (req.url != '/favicon.ico') {res.setHeader('Content-Type', 'text/html');res.write(`<html><head><meta charset="utf8"/></head><body>hello</body></html>`);res.end();} }); server.listen(443, function () {console.log('服務(wù)器端開(kāi)始監(jiān)聽(tīng)!');//server.close(); }); server.on('close', function () {console.log('服務(wù)器已被關(guān)閉!'); }); 復(fù)制代碼

2.6 創(chuàng)建HTTPS客戶端

在https模塊中,可以使用request方法向其它使用HTTPS協(xié)議的網(wǎng)站請(qǐng)求數(shù)據(jù)

let req = https.request(options,callback); 復(fù)制代碼
  • host 指定域名或目標(biāo)主機(jī)的IP地址
  • hostname 指定域名或目標(biāo)主機(jī)的IP地址
  • port 端口號(hào)
  • method 指定請(qǐng)求方法名
  • path 指下請(qǐng)求路徑及查詢字符串
  • headers 客戶端請(qǐng)求頭對(duì)象
  • auth 指定認(rèn)證信息部分
  • agent 指定用戶代理,指定false則從連接池中挑選一個(gè)連接狀態(tài)為關(guān)閉的https.Agent對(duì)象
  • pfx 指定私鑰、公鑰和證書(shū)
  • key 指定私鑰
  • cert 公鑰
  • ca 一組證書(shū)
let https = require('https'); process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" let options = {hostname: '123.57.77.210',port: 443,path: '/',method: 'GET',agent: false } let req = https.request(options, function (res) {console.log(res.statusCode);console.log(res.headers);res.setEncoding('utf8');res.on('data', function (chunk) {console.log(chunk);}); }); req.end(); 復(fù)制代碼

HTTP

  • 請(qǐng)求的一方叫客戶端,響應(yīng)的一方叫服務(wù)器端
  • 通過(guò)請(qǐng)求和響應(yīng)達(dá)成通信
  • HTTP是一種不保存狀態(tài)的協(xié)議

3.1 內(nèi)容協(xié)商

首部字段

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

協(xié)商類型

  • 服務(wù)器驅(qū)動(dòng)
  • 客戶端驅(qū)動(dòng)協(xié)商
  • 透明協(xié)商

3.2 狀態(tài)碼

狀態(tài)碼負(fù)責(zé)表示客戶端請(qǐng)求的返回結(jié)果、標(biāo)記服務(wù)器端是否正常、通知出現(xiàn)的錯(cuò)誤

3.3 狀態(tài)碼類別

類別 原因短語(yǔ)

  • 1XX Informational(信息性狀態(tài)碼)
  • 2XX Success(成功狀態(tài)碼)
  • 3XX Redirection(重定向)
  • 4XX Client Error(客戶端錯(cuò)誤狀態(tài)碼)
  • 5XX Server Error(服務(wù)器錯(cuò)誤狀態(tài)嗎)

3.4.1 2XX 成功

  • 200(OK 客戶端發(fā)過(guò)來(lái)的數(shù)據(jù)被正常處理
  • 204(Not Content 正常響應(yīng),沒(méi)有實(shí)體
  • 206(Partial Content 范圍請(qǐng)求,返回部分?jǐn)?shù)據(jù),響應(yīng)報(bào)文中由Content-Range指定實(shí)體內(nèi)容

3.4.2 3XX 重定向

  • 301(Moved Permanently) 永久重定向
  • 302(Found) 臨時(shí)重定向,規(guī)范要求方法名不變,但是都會(huì)改變
  • 303(See Other) 和302類似,但必須用GET方法
  • 304(Not Modified) 狀態(tài)未改變 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
  • 307(Temporary Redirect) 臨時(shí)重定向,不該改變請(qǐng)求方法

3.4.3 4XX 客戶端錯(cuò)誤

  • 400(Bad Request) 請(qǐng)求報(bào)文語(yǔ)法錯(cuò)誤
  • 401 (unauthorized) 需要認(rèn)證
  • 403(Forbidden) 服務(wù)器拒絕訪問(wèn)對(duì)應(yīng)的資源
  • 404(Not Found) 服務(wù)器上無(wú)法找到資源

3.4.4 5XX 服務(wù)器端錯(cuò)誤

  • 500(Internal Server Error)服務(wù)器故障
  • 503(Service Unavailable) 服務(wù)器處于超負(fù)載或正在停機(jī)維護(hù)

首部

4.1 通用首部字段

首部字段名說(shuō)明
Cache-Control控制緩存行為
Connection鏈接的管理
Date報(bào)文日期
Pragma報(bào)文指令
Trailer報(bào)文尾部的首部
Trasfer-Encoding指定報(bào)文主體的傳輸編碼方式
Upgrade升級(jí)為其他協(xié)議
Via代理服務(wù)器信息
Warning錯(cuò)誤通知

4.2 請(qǐng)求首部字段

首部字段名說(shuō)明
Accept用戶代理可處理的媒體類型
Accept-Charset優(yōu)先的字符集
Accept-Encoding優(yōu)先的編碼
Accept-Langulage優(yōu)先的語(yǔ)言
AuthorizationWeb認(rèn)證信息
Expect期待服務(wù)器的特定行為
From用戶的電子郵箱地址
Host請(qǐng)求資源所在的服務(wù)器
If-Match比較實(shí)體標(biāo)記
If-Modified-Since比較資源的更新時(shí)間
If-None-Match比較實(shí)體標(biāo)記
If-Range資源未更新時(shí)發(fā)送實(shí)體Byte的范圍請(qǐng)求
If-Unmodified-Since比較資源的更新時(shí)間(和If-Modified-Since相反)
Max-Forwards最大傳輸跳數(shù)
Proxy-Authorization代理服務(wù)器需要客戶端認(rèn)證
Range實(shí)體字節(jié)范圍請(qǐng)求
Referer請(qǐng)求中的URI的原始獲取方
TE傳輸編碼的優(yōu)先級(jí)
User-AgentHTTP客戶端程序的信息

4.3 響應(yīng)首部字段

首部字段名說(shuō)明
Accept-Ranges是否接受字節(jié)范圍
Age資源的創(chuàng)建時(shí)間
ETag資源的匹配信息
Location客戶端重定向至指定的URI
Proxy-Authenticate代理服務(wù)器對(duì)客戶端的認(rèn)證信息
Retry-After再次發(fā)送請(qǐng)求的時(shí)機(jī)
Server服務(wù)器的信息
Vary代理服務(wù)器緩存的管理信息
www-Authenticate服務(wù)器對(duì)客戶端的認(rèn)證

4.4 實(shí)體首部字段

首部字段名說(shuō)明
Allow資源可支持的HTTP方法
Content-Encoding實(shí)體的編碼方式
Content-Language實(shí)體的自然語(yǔ)言
Content-Length實(shí)體的內(nèi)容大小(字節(jié)為單位)
Content-Location替代對(duì)應(yīng)資源的URI
Content-MD5實(shí)體的報(bào)文摘要
Content-Range實(shí)體的位置范圍
Content-Type實(shí)體主體的媒體類型
Expires實(shí)體過(guò)期時(shí)間
Last-Modified資源的最后修改時(shí)間

這些信息頭是做壓縮,緩存,范圍請(qǐng)求等功能的必需條件,想了解的可以看看我寫(xiě)的靜態(tài)服務(wù)。

總結(jié)

以上是生活随笔為你收集整理的HTTP那些小事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 特黄三级又爽又粗又大 | 91精品久久久久 | 亚洲欧美色图片 | 亚洲av无码一区二区二三区 | 操韩国美女| 两性囗交做爰视频 | 日本裸体网站 | 极品销魂美女一区二区 | 色屁屁草草影院ccyycom | 日本精品一区二区三区四区 | 欧美一级日韩 | 日韩最新| 精品少妇白浆小泬60P | 国产精品视频免费在线观看 | 色哟哟在线 | 亚洲国产成人自拍 | 99视频在线精品免费观看2 | 69视频免费 | 婷婷激情久久 | 亚洲欧美中文字幕 | 久久亚洲精品国产 | av天天干 | 欧美性猛交性大交 | 欧美日韩成人免费观看 | 日本少妇性生活 | 日韩激情av在线 | 99热这里| 黄色一及毛片 | 另类激情 | 亚洲av永久无码国产精品久久 | ass大乳尤物肉体pics | 青青网站| 久久视频这里只有精品 | 天天干天天色 | 永久av在线免费观看 | 8x8ⅹ成人永久免费视频 | 久久成人乱码欧美精品一区二区 | 在线观看一区二区视频 | 日韩精品视频在线看 | 网址在线观看你懂的 | 精品成人一区二区三区久久精品 | 日剧再来一次第十集 | 91九色在线视频 | 亚洲毛片av| 无码人妻aⅴ一区二区三区日本 | 黄色在线免费看 | 久久久久久久极品内射 | 51精品国产人成在线观看 | 日本福利小视频 | 色婷婷国产精品视频 | 精品一区二区三区在线观看 | 一区二区在线精品 | 亚洲天天做 | 激情午夜视频 | 亚洲AV无码成人精品区在线观 | 中文字幕第31页 | 国产精品免费无码 | 久久精品无码专区免费 | 亚洲va天堂va国产va久 | 一级作爱片 | 黄色一区二区三区四区 | 在线高清av| 国产成人啪精品午夜在线观看 | 美女脱了裤子让男人桶 | 久青草影院 | 久草色视频 | 午夜污 | 精品亚洲国产成人av制服丝袜 | www.av在线免费观看 | 国产精品三级视频 | 久久综合一本 | 青青草原亚洲视频 | 50部乳奶水在线播放 | 亚洲性影院| 97av在线视频 | 91片黄在线观看喷潮 | 热@国产 | 国产性色av | 成年人视频在线观看免费 | 熟女一区二区三区四区 | 日本一区二区观看 | 久热免费在线 | 看毛片看毛片 | 久久永久免费视频 | 日韩精品导航 | 日韩一区久久 | 青青色在线视频 | 日韩不卡免费视频 | 日韩视频精品一区 | 亚洲爆乳无码精品aaa片蜜桃 | 啄木乌欧美一区二区三区 | 国产乱了高清露脸对白 | 欧美草b| 欧美乱论视频 | 亚洲av无码一区二区三区在线 | 成人小视频在线播放 | 日本黄动漫 | 四虎黄色网址 | 999久久|