HTTP 筆記

一 . HTTP 簡介

超文本傳輸協(xié)議(英文:HyperText Transfer Protocol,縮寫:HTTP)是互聯(lián)網上應用最為廣泛的一種網絡協(xié)議。

設計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。通過HTTP或者HTTPS協(xié)議請求的資源由統(tǒng)一資源標識符(Uniform Resource Identifiers,URI)來標識。

HTTP是一個客戶端終端(用戶)和服務器端(網站)請求和應答的標準(TCP)。

通過使用網頁瀏覽器、網絡爬蟲或者其它的工具,客戶端發(fā)起一個HTTP請求到服務器上指定端口(默認端口為80)。

我們稱這個客戶端為用戶代理程序(user agent)。

應答的服務器上存儲著一些資源,比如HTML文件和圖像。我們稱這個應答服務器為源服務器(origin server)。

在用戶代理和源服務器中間可能存在多個“中間層”,比如代理服務器、網關或者隧道(tunnel)。

盡管TCP/IP協(xié)議是互聯(lián)網上最流行的應用,HTTP協(xié)議中,并沒有規(guī)定必須使用它或它支持的層。

事實上,HTTP可以在任何互聯(lián)網協(xié)議上,或其他網絡上實現(xiàn)。HTTP假定其下層協(xié)議提供可靠的傳輸。

因此,任何能夠提供這種保證的協(xié)議都可以被其使用。因此也就是其在TCP/IP協(xié)議族使用TCP作為其傳輸層。


二.HTTP協(xié)議特點

HTTP 協(xié)議一共有五大特點:1、支持客戶/服務器模式;2、簡單快速;3、靈活;4、無連接(1.0)/持久連接(1.1);5、無狀態(tài)。

無連接:是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。

無狀態(tài):是指協(xié)議對于事務處理沒有記憶能力,服務器不知道客戶端是什么狀態(tài)。即我們給服務器發(fā)送 HTTP 請求之后,服務器根據請求,會給我們發(fā)送數(shù)據過來,但是,發(fā)送完,不會記錄任何信息。


三.HTTP報文

HTTP請求報文由3部分組成( 請求行+請求頭+請求體 ):


HTTP Request Headers

這是這篇文章的請求報文

第一行為請求行 <請求方法><URL><HTTP協(xié)議和版本>

第二行開始為請求頭?

請求頭之后是空行

然后是請求數(shù)據

HTTP 響應報文也由三部分組成 狀態(tài)行、消息報頭、響應正文。


HTTP響應報文

第一行為狀態(tài)行,包含各種狀態(tài)碼? ?1XX 代表消息 ?2XX 代表成功 3XX 代表重定向 4XX 代表客戶的錯誤 5XX服務器錯誤

第二行開始是消息報頭

消息報頭之后空一行,然后是響應正文

常見的請求方式有 GET 和 POST

1.GET提交,請求的數(shù)據會附在URL之后(就是把數(shù)據放置在HTTP協(xié)議頭<request-line>中),以?分割URL和傳輸數(shù)據,多個參數(shù)用&連接;例如:login.do?name=xxx&password=xxx。如果數(shù)據是英文字母/數(shù)字,原樣發(fā)送,如果是空格,轉換為+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。

POST提交:把提交的數(shù)據放置在是HTTP包的包體<request-body>中

因此,GET提交的數(shù)據會在地址欄中顯示出來,而POST提交,地址欄不會改變

2.傳輸數(shù)據的大小:

首先聲明,HTTP協(xié)議沒有對傳輸?shù)臄?shù)據大小進行限制,HTTP協(xié)議規(guī)范也沒有對URL長度進行限制。 而在實際開發(fā)中存在的限制主要有:

GET:特定瀏覽器和服務器對URL長度有限制,例如IE對URL長度的限制是2083字節(jié)(2K+35)。對于其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決于操作系統(tǒng)的支持。

因此對于GET提交時,傳輸數(shù)據就會受到URL長度的限制。

POST:由于不是通過URL傳值,理論上數(shù)據不受限。但實際各個WEB服務器會規(guī)定對post提交數(shù)據大小進行限制,Apache、IIS6都有各自的配置。

3.安全性:

POST的安全性要比GET的安全性高。注意:這里所說的安全性和上面GET提到的“安全”不是同個概念。上面“安全”的含義僅僅是不作數(shù)據修改,而這里安全的含義是真正的Security的含義,比如:通過GET提交數(shù)據,用戶名和密碼將明文出現(xiàn)在URL上,因為(1)登錄頁面有可能被瀏覽器緩存, (2)其他人查看瀏覽器的歷史紀錄,那么別人就可以拿到你的賬號和密碼了,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,741評論 6 152
  • Http協(xié)議詳解 標簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內容來源于博客園作者MIN飛翔的HTTP協(xié)...
    Sivin閱讀 5,345評論 3 82
  • 前言:最近發(fā)現(xiàn)自己在網絡相關這一塊基礎很是欠缺,所以準備花時間了解一下,本文主要是講http協(xié)議的一些基礎,和一些...
    justCode_閱讀 2,148評論 0 23
  • 1.網絡讓我們接近世界,但又讓我們遠離生活。 2.有時候,我們喜歡一首歌,不是因為歌唱的多好聽,而是因為歌詞寫的像...
    伊熙玉涵閱讀 130評論 0 0

友情鏈接更多精彩內容