這是一篇資訊整理文章,可以當作工具來看http全稱是超文字傳輸協議,構建於tcp之上,屬於應用層協議。
請求或響應在傳輸途中,遭攻擊者攔截並篡改內容的攻擊被稱為中間人攻擊(man-in-the-middle attack,mitm)
https是在通訊介面部分用 tls(transport layer security)協議。
https 協議的主要功能基本都依賴於 tls/ssl 協議,tls/ssl 的功能實現主要依賴於三類基本演算法:雜湊函式 、對稱加密和非對稱加密,其利用非對稱加密實現身份認證和金鑰協商,對稱加密演算法採用協商的金鑰對資料加密,基於雜湊函式驗證資訊的完整性。
結合三類演算法的特點,tls 的基本工作方式是
在創業https伺服器之前,伺服器首先需要建立公鑰、私鑰及證書,步驟如下
openssl genrsa -out privatekey.pem 1024
複製**
openssl req -new -key privatekey.pem -out certrequest.csr
複製**
證書應該是乙個經過證書授證中心簽名的檔案,該證書檔案內包含了伺服器端提供的公鑰以及證書的辦法機構等資訊。
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
複製**
在具備了證書檔案後,可以使用該證書檔案建立乙個pfx檔案。 所謂pfx檔案,是指該檔案內容必須符合公鑰加密技術12號標準。
openssl pkcs12 -export -in certificate.pem -inkey privatekey.pem -out certificate.pfx
複製**
https.createserver(options,[requestlistener]);
複製**
let https = require('https');
複製**
在https模組中,可以使用request方法向其它使用https協議的**請求資料
複製**
let https = require('https');
複製**
首部字段
協商型別
狀態碼負責表示客戶端請求的返回結果、標記伺服器端是否正常、通知出現的錯誤
類別 原因短語
首部欄位名
說明cache-control
控制快取行為
connection
鏈結的管理
date
報文日期
pragma
報文指令
trailer
報文尾部的首部
trasfer-encoding
指定報文主體的傳輸編碼方式
upgrade
公升級為其他協議
via**伺服器資訊
warning
錯誤通知
首部欄位名
說明accept
使用者**可處理的**型別
accept-charset
優先的字符集
accept-encoding
優先的編碼
accept-langulage
優先的語言
authorization
web認證資訊
expect
期待伺服器的特定行為
from
使用者的電子郵箱位址
host
請求資源所在的伺服器
if-match
比較實體標記
if-modified-since
比較資源的更新時間
if-none-match
比較實體標記
if-range
資源未更新時傳送實體byte的範圍請求
if-unmodified-since
比較資源的更新時間(和if-modified-since相反)
max-forwards
最大傳輸跳數
proxy-authorization
**伺服器需要客戶端認證
range
實體位元組範圍請求
referer
請求中的uri的原始獲取方
te傳輸編碼的優先順序
user-agent
http客戶端程式的資訊
首部欄位名
說明accept-ranges
是否接受位元組範圍
age資源的建立時間
etag
資源的匹配資訊
location
客戶端重定向至指定的uri
proxy-authenticate
**伺服器對客戶端的認證資訊
retry-after
再次傳送請求的時機
server
伺服器的資訊
vary
**伺服器快取的管理資訊
www-authenticate
伺服器對客戶端的認證
首部欄位名
說明allow
資源可支援的http方法
content-encoding
實體的編碼方式
content-language
實體的自然語言
content-length
實體的內容大小(位元組為單位)
content-location
替代對應資源的uri
content-md5
實體的報文摘要
content-range
實體的位置範圍
content-type
實體主體的**型別
expires
實體過期時間
last-modified
資源的最後修改時間
const的那些小事
關於const 為什麼需要const?請看以下語句 for int index 0 index 512 index 在此語句中有兩個問題 1 512這個常量含義不明確,也並不清楚index與512比較有什麼作用 2 假如在程式中多次使用到512這個常量時,在後來的工作需要把512改為111的話修改的...
談談React那些小事
而對於react的開發者來說,如何利用react構建現代化的前端專案,產出高質量的前端 才是學習react的重點。所以本文就我自己平時利用react開發專案的經驗和個人見解,來談談在react專案中需要了解和容易忽略的 小事 俗話說 千里之堤毀於蟻穴 在react開發中我們不能忙於進度而忽視了細節。...
談談React那些小事
說起react,那也是近一年多時間火起來的前端框架,其在facebook的影響力和大力推廣下,已然成為目前前端界的中流砥柱。在如今的前端框架界,react vue angular三分天下的時代已經到來,而曾經jquery一統天下的局面已一去不復返。而對於react的開發者來說,如何利用react構建...