HTTP/HTTPS淺談

1、HTTP和HTTPS的區別瀏覽器

  1. HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭
  2. HTTP 是不安全的,而 HTTPS 是安全的
  3. HTTP 沒法加密,而HTTPS 對傳輸的數據進行加密
  4. HTTP無需證書,而HTTPS 須要CA機構wosign的頒發的SSL證書
  5. HTTP 標準端口是80 ,而 HTTPS 的標準端口是443

2、Http協議無狀態協議和解決安全

  1. 無狀態協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息服務器

   也就是說,當客戶端一次HTTP請求完成之後,客戶端再發送一次HTTP請求,HTTP並不知道當前客戶端是一個」老用戶cookie

  2.解決:可使用Cookie來解決無狀態的問題,Cookie就至關於一個通行證,第一次訪問的時候給客戶端發送一個Cookie,當客戶端再次來的時候,拿着Cookie(通行證),那麼服務器就知   道這個是」老用戶「網絡

 

3、常見的HTTP相應狀態碼session

200:請求被正常處理app

204:請求被受理但沒有資源能夠返回jsp

206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中經過Content-Range指定範圍的資源。加密

301:永久性重定向spa

302:臨時重定向

303:與302狀態碼有類似功能,只是它但願客戶端在請求一個URI的時候,能經過GET方法重定向到另外一個URI上

304:發送附帶條件的請求時,條件不知足時返回,與重定向無關

307:臨時重定向,與302相似,只是強制要求使用POST方法

400:請求報文語法有誤,服務器沒法識別

401:請求須要認證

403:請求的對應資源禁止被訪問

404:服務器沒法找到對應資源

500:服務器內部錯誤

503:服務器正忙

 

4、cookie和session

cookie:

存儲在客戶端,至關於口令,判斷是不是可信用戶,cookie的生命週期在關閉瀏覽器後結束

一個HTTP cookie的(網絡Cookie,瀏覽器cookie)是一小片數據的一個服務器發送到用戶的網絡瀏覽器。瀏覽器能夠存儲它並將其與下一個請求一塊兒發送回同一服務器。一般,它用於判斷兩個請求是否來自同一個瀏覽器 - 例如,保持用戶登陸。它記住無狀態 HTTP協議的有狀態信息。
session:

存儲在服務器端,判斷多個請求是否來自同一用戶,有會話超時時間,超時後把用戶下線

客戶端請求服務端,服務端(Tomcat)會爲此次請求開闢一塊內存空間,這個對象即是Session對象, 存儲結構爲ConcurrentHashMap。

session的目的:彌補HTTP無狀態特性,服務器能夠利用session存儲客戶端在同一個會話期間的一些操做記錄。

 

5、一次HTTP請求過程

HTTP通訊機制是在一次完整的HTTP通訊過程當中,Web瀏覽器與Web服務器之間將完成下列7個步驟:

創建TCP鏈接

在HTTP工做開始以前,Web瀏覽器首先要經過網絡與Web服務器創建鏈接,該鏈接是經過TCP來完成的,該協議與IP協議共同構建 Internet,即著名的TCP/IP協議族,所以Internet又被稱做是TCP/IP網絡。HTTP是比TCP更高層次的應用層協議,根據規則, 只有低層協議創建以後才能,才能進行更層協議的鏈接,所以,首先要創建TCP鏈接,通常TCP鏈接的端口號是80。

Web瀏覽器向Web服務器發送請求行

一旦創建了TCP鏈接,Web瀏覽器就會向Web服務器發送請求命令。例如:GET /sample/hello.jsp HTTP/1.1。

Web瀏覽器發送請求頭

  • 瀏覽器發送其請求命令以後,還要以頭信息的形式向Web服務器發送一些別的信息,以後瀏覽器發送了一空白行來通知服務器,它已經結束了該頭信息的發送。

Web服務器應答

  • 客戶機向服務器發出請求後,服務器會客戶機回送應答, HTTP/1.1 200 OK ,應答的第一部分是協議的版本號和應答狀態碼。

Web服務器發送應答頭

  • 正如客戶端會隨同請求發送關於自身的信息同樣,服務器也會隨同應答向用戶發送關於它本身的數據及被請求的文檔。

Web服務器向瀏覽器發送數據

  • Web服務器向瀏覽器發送頭信息後,它會發送一個空白行來表示頭信息的發送到此爲結束,接着,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據

Web服務器關閉TCP鏈接

      • 通常狀況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP鏈接,而後若是瀏覽器或者服務器在其頭信息加入了這行代碼:

Connection:keep-alive

TCP鏈接在發送後將仍然保持打開狀態,因而,瀏覽器能夠繼續經過相同的鏈接發送請求。保持鏈接節省了爲每一個請求創建新鏈接所需的時間,還節約了網絡帶寬。

創建TCP鏈接->發送請求行->發送請求頭->(到達服務器)發送狀態行->發送響應頭->發送響應數據->斷TCP鏈接

相關文章
相關標籤/搜索