http與https,http狀態碼詳細列表

超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此,HTTP協議不適合傳輸一些敏感信息,比如:信用卡號、密碼等支付信息。

  爲了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS,爲了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,併爲瀏覽器和服務器之間的通信加密。

一、HTTP和HTTPS的基本概念

  HTTP:是互聯網上應用最爲廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。

  HTTPS:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

  HTTPS協議的主要作用可以分爲兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

二、HTTP與HTTPS有什麼區別?

  HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,爲了保證這些隱私數據能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。

  HTTPS和HTTP的區別主要如下:

  1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

  2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

  3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。

  4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

三、HTTPS的工作原理

  我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取,所以很多銀行網站或電子郵箱等等安全級別較高的服務都會採用HTTPS協議。

HTTP與HTTPS的區別-馬海祥博客

 客戶端在使用HTTPS方式與Web服務器通信時有以下幾個步驟,如圖所示。

  (1)客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。

  (2)Web服務器收到客戶端請求後,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。

  (3)客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。

  (4)客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰將會話密鑰加密,並傳送給網站。

  (5)Web服務器利用自己的私鑰解密出會話密鑰。

  (6)Web服務器利用會話密鑰加密與客戶端之間的通信。

  

四、HTTPS的優點

  儘管HTTPS並非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的攻擊,但HTTPS仍是現行架構下最安全的解決方案,主要有以下幾個好處:

  (1)使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;

  (2)HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性。

  (3)HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

  (4)谷歌曾在2014年8月份調整搜索引擎算法,並稱“比起同等HTTP網站,採用HTTPS加密的網站在搜索結果中的排名將會更高”。

五、HTTPS的缺點

  雖然說HTTPS有很大的優勢,但其相對來說,還是存在不足之處的:

  (1)HTTPS協議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電;

  (2)HTTPS連接緩存不如HTTP高效,會增加數據開銷和功耗,甚至已有的安全措施也會因此而受到影響;

  (3)SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。

    (4)SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。

  (5)HTTPS協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什麼作用。最關鍵的,SSL證書的信用鏈體系並不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。

六、http切換到HTTPS

  如果需要將網站從http切換到https到底該如何實現呢?

     這裏需要將頁面中所有的鏈接,例如js,css,圖片等等鏈接都由http改爲https。例如:http://www.baidu.com改爲https://www.baidu.com

  BTW,這裏雖然將http切換爲了https,還是建議保留http。所以我們在切換的時候可以做http和https的兼容,具體實現方式是,去掉頁面鏈接中的http頭部,這樣可以自動匹配http頭和https頭。例如:將http://www.baidu.com改爲//www.baidu.com。然後當用戶從http的入口進入訪問頁面時,頁面就是http,如果用戶是從https的入口進入訪問頁面,頁面即使https的。

 

當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭用以響應瀏覽器的請求。

http狀態碼的核心作用是Web Server服務器用來告訴客戶端,當前的網頁請求發生了什麼事,或者說當前Web服務器的響應狀態。所以HTTP狀態碼常用來判斷和分析當前Web服務器的運行狀況。

七、常用的http狀態碼:

200 OK 服務器成功處理了請求(這個是我們見到最多的)

301/302 Moved Permanently(重定向)請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置

404 Not Found(頁面丟失)未找到資源

501 Internal Server Error服務器遇到一個錯誤,使其無法對請求提供服務

1開頭:(被接受,需要繼續處理。)
這一類型的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭信息,並以空行結束。

2開頭 (請求成功)
這一類型的狀態碼,代表請求已成功被服務器接收、理解、並接受

3開頭 (請求被重定向)
這類狀態碼代表需要客戶端採取進一步的操作才能完成請求。通常,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的 Location 域中指明。

4開頭:(請求錯誤)
這類的狀態碼代表了客戶端看起來可能發生了錯誤,妨礙了服務器的處理。除非響應的是一個 HEAD 請求,否則服務器就應該返回一個解釋當前錯誤狀況的實體,以及這是臨時的還是永久性的狀況。這些狀態碼適用於任何請求方法。瀏覽器應當向用戶顯示任何包含在此類錯誤響應中的實體內容。

5開頭:(服務器錯誤)
這類狀態碼代表了服務器在處理請求的過程中有錯誤或者異常狀態發生,也有可能是服務器意識到以當前的軟硬件資源無法完成對請求的處理。除非這是一個HEAD 請求,否則服務器應當包含一個解釋當前錯誤狀態以及這個狀況是臨時的還是永久的解釋信息實體。瀏覽器應當向用戶展示任何在當前響應中被包含的實體。

在進行一個http請求的時候,我們看到的只是最後服務器返回來的狀態碼,比如出錯了404之類,或者成功了200.這說明整個http狀態請求的過程中,狀態碼都只是最後返回的那個狀態碼嗎?

實際上在請求的過程中,http狀態碼的變化的非常快,像剛纔說的1開頭的狀態碼(被接受,需要繼續處理。),這類狀態碼只是一個臨時響應的狀態碼,http請求還是要繼續進行下去的,這種狀態碼是用來反映現在請求進行到哪一步了。除非是類似那種像打斷點的東西,一步操作停一下,纔會清晰的看出http狀態碼是如何進行變化的。

1開頭:(被接受,需要繼續處理。)

這一類型的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭信息,並以空行結束。由於 HTTP/1.0 協議中沒有定義任何 1xx 狀態碼,所以除非在某些試驗條件下,服務器禁止向此類客戶端發送 1xx 響應。

100(客戶端繼續發送請求,這是臨時響應):這個臨時響應是用來通知客戶端它的部分請求已經被服務器接收,且仍未被拒絕。客戶端應當繼續發送請求的剩餘部分,或者如果請求已經完成,忽略這個響應。服務器必須在請求完成後向客戶端發送一個最終響應。

101服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到HTTP的新版本協議。

102 (代表處理將被繼續執行) 由WebDAV(RFC 2518)擴展的狀態碼,代表處理將被繼續執行。

2開頭 這一類型的狀態碼,代表請求已成功被服務器接收、理解、並接受。

200 (成功) 服務器已成功處理了請求。 通常,這表示服務器提供了請求的網頁。

201 (已創建) 請求成功並且服務器創建了新的資源。

202 (已接受) 服務器已接受請求,但尚未處理。

203 (非授權信息) 服務器已成功處理了請求,但返回的信息可能來自另一來源。

204 (無內容) 服務器成功處理了請求,但沒有返回任何內容。

205 (重置內容) 服務器成功處理了請求,但沒有返回任何內容。

206 (部分內容) 服務器成功處理了部分 GET 請求。

207 (代表之後的消息體將是一個XML消息),並且可能依照之前子請求數量的不同,包含一系列獨立的響應代碼。

3開頭 (請求被重定向)表示要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。

300 (多種選擇) 針對請求,服務器可執行多種操作。 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。

301 (永久移動) 請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。

302 (臨時移動) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。

304 (未修改)自從上次請求後,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。

305 (使用代理) 請求者只能使用代理訪問請求的網頁。 如果服務器返回此響應,還表示請求者應使用代理。

307 (臨時重定向) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

4開頭 (請求錯誤)這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。

400 (錯誤請求) 服務器不理解請求的語法。

401 (未授權) 請求要求身份驗證。 對於需要登錄的網頁,服務器可能返回此響應。

403 (禁止) 服務器拒絕請求。

404 (未找到) 服務器找不到請求的網頁。

405 (方法禁用) 禁用請求中指定的方法。

406 (不接受) 無法使用請求的內容特性響應請求的網頁。

407 (需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理。

408 (請求超時) 服務器等候請求時發生超時。

409 (衝突) 服務器在完成請求時發生衝突。 服務器必須在響應中包含有關衝突的信息。

410 (已刪除) 如果請求的資源已永久刪除,服務器就會返回此響應。

411 (需要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。

412 (未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。

413 (請求實體過大) 服務器無法處理請求,因爲請求實體過大,超出服務器的處理能力。

414 (請求的 URI 過長) 請求的 URI(通常爲網址)過長,服務器無法處理。

415 (不支持的媒體類型) 請求的格式不受請求頁面的支持。

416 (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則服務器會返回此狀態代碼。

417 (未滿足期望值) 服務器未滿足"期望"請求標頭字段的要求。

5開頭(服務器錯誤)這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。

這些錯誤可能是服務器本身的錯誤,而不是請求出錯。

500 (服務器內部錯誤) 服務器遇到錯誤,無法完成請求。

501 (尚未實施) 服務器不具備完成請求的功能。 例如,服務器無法識別請求方法時可能會返回此代碼。

502 (錯誤網關) 服務器作爲網關或代理,從上游服務器收到無效響應。(比如:nginx裏設置了反向代理,自己代理給自己,形成了死循環,造成大量的訪問日誌,每秒上萬)

503 (服務不可用) 服務器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。

504 (網關超時) 服務器作爲網關或代理,但是沒有及時從上游服務器收到請求。

505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本

八 查看狀態碼:

使用谷歌瀏覽器,f12或者開發者工具進入:

其中status下的302就是資源的返回狀態碼。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章