Method Not Allowed
方法實現了可是不充許用Not Implemented
請求的方法沒有實現ETag: W/"2a3b-1602480f459"
If-None-Match: W/"2a3b-1602480f459"
Last-Modified
If-Modified-Since
複製代碼
那麼這樣一來,基本能夠將 no-cache 與 must-revalidate, max-age=0 劃等了,但這二者也有些細節上的區別,即:vue
在執行must-revalidate時,若瀏覽器第二次去請求服務器來作新鮮度驗證,結果服務器掛了,沒法訪問,那麼緩存須要返回一個504 Gateway Timeout的錯誤(這裏應該是像nginx這樣的代理來返回,如果瀏覽器如chrome,將直接是ERR_CONNECTION_REFUSED,即沒法訪問,鏈接被拒絕)。ios
而若是是no-cache,當驗證新鮮度時,服務器撲街,則會照樣使用本地緩存顯示給用戶(有的總比沒的好,固然有可能顯示的就是舊的文檔了)。nginx
因此must-revalidate用在對事務要求比較嚴苛的狀況下使用(好比支付)web
6個控制位,用來講明本報文段的性質。說明: 確認 ack、推送 psh、 復位 rst、同步 syn、 終止 fin、 窗口算法
爲何A最後還要發送一次確認呢?這主要是爲了防止已失效的鏈接請求報文段忽然又傳到B,於是產生錯誤。1.1版本新增,對同一個域名同時開6個connection,我發了12個get請求,瀏覽器採用非流水線模式。見下圖:chrome
觀察connection列,第二組與第一組的id是相同的,說明是共用的第一組。express
不一樣的域、協議或端口請求一個資源時,資源會發起一個跨域 HTTP 請求。 瀏覽器限制從腳本內發起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。這意味着使用這些API的Web應用程序只能從加載應用程序的同一個域請求HTTP資源,除非響應報文包含了正確CORS響應頭。json
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Access-Token,X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
})
複製代碼
與前述簡單請求不一樣,「需預檢的請求」要求必須首先使用 OPTIONS 方法發起一個預檢請求到服務器,以獲知服務器是否容許該實際請求。"預檢請求「的使用,能夠避免跨域請求對服務器的用戶數據產生未預期的影響。axios
舉例:OPTIONS /users/ 200 0.883 ms - 13
後端
發送post請求到users,S端只收到options請求,B收到響應後, 知道不許許跨域,不會再發送真正的post請求
# vue 中axios
this.$http.get('http://localhost:3000/users/', {
withCredentials: true
})
# 響應頭設置
res.header("Access-Control-Allow-Origin", "http://localhost:8080");
res.header("Access-Control-Allow-Headers", "Content-Type,x-xsrf-token");
res.header("Access-Control-Allow-Credentials",true);
複製代碼
對於附帶身份憑證的請求,服務器不得設置 Access-Control-Allow-Origin 的值爲「*」。
跨域資源共享標準新增了一組 HTTP 首部字段,容許服務器聲明哪些源站經過瀏覽器有權限訪問哪些資源。另外,規範要求,對那些可能對服務器數據產生反作用的 HTTP 請求方法(特別是 GET 之外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發起一個預檢請求(preflight request),從而獲知服務端是否容許該跨域請求。服務器確認容許以後,才發起實際的 HTTP 請求。在預檢請求的返回中,服務器端也能夠通知客戶端,是否須要攜帶身份憑證(包括 Cookies 和 HTTP 認證相關數據)。
之因此要遞增一個大版本到 2.0,主要是由於它改變了客戶端與服務器之間交換數據 的方式。爲實現宏偉的性能改進目標,HTTP 2.0 增長了新的二進制分幀數據層,而 這一層並不兼容以前的 HTTP 1.x 服務器及客戶端——是謂 2.0。
流是鏈接中的一個虛擬信道,能夠承載雙向的消息;每一個流都有一個惟一的整數 標識符(一、2…N)
消息是指邏輯上的 HTTP 消息,好比請求、響應等,由一或多個幀組成
幀是最小的通訊單位,承載着特定類型的數據,如 HTTP 首部、負荷,等等。
有了新的分幀機制後,HTTP 2.0 再也不依賴多個 TCP 鏈接去實現多流並行了。 如今, 每一個數據流都拆分紅不少幀,而這些幀能夠交錯,還能夠分別優先級。 因而,全部 HTTP 2.0 鏈接都是持久化的,並且客戶端與服務器之間也只須要一個鏈接便可。
(一般簡稱爲HSTS)是一個安全功能,它告訴瀏覽器只能經過HTTPS訪問當前資源,而不是HTTP。
語法
設置在瀏覽器收到這個請求後的<expire-time>秒的時間內凡是訪問這個域名下的請求都使用HTTPS請求。
Strict-Transport-Security: max-age=<expire-time>
若是這個可選的參數被指定,那麼說明此規則也適用於該網站的全部子域名。
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
查看 預加載 HSTS 得到詳情。不是標準的一部分。
Strict-Transport-Security: max-age=<expire-time>; preload
複製代碼
Chrome、Firefox等瀏覽器裏,當您嘗試訪問該域名下的內容時,會產生一個307 Internal Redirect(內部跳轉),自動跳轉到HTTPS請求。
Upgrade-Insecure-Requests: 1
是一個請求首部,用來向服務器端發送信號,表示客戶端優先選擇加密及帶有身份驗證的響應,
參考 :developer.mozilla.org/zh-CN/docs/…
密碼編碼學是密碼體制的設計學,而密碼分析學則是未知密鑰的狀況下從密文推演出明文或密鑰的技術。密碼編碼學與密碼分析學合起來即爲密碼學。
RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業中RSA被普遍使用。當時他們三人都在麻省理工學院工做。RSA就是他們三人姓氏開頭字母拼在一塊兒組成的。
HTTPS在傳輸的過程當中會涉及到三個密鑰:服務器端的公鑰和私鑰,用來進行非對稱加密
客戶端生成的隨機密鑰,用來進行對稱加密
(1)協商加密算法。
(2) 服務器鑑別。
(3) 會話密鑰計算。 由瀏覽器A隨機產生一個祕密數。
(4)安全數據傳輸