HTTP是一個應(yīng)用層協(xié)議功偿,由請求和響應(yīng)構(gòu)成盆佣,是一個標準的客戶端服務(wù)器模型。HTTP是一個無狀態(tài)的協(xié)議械荷。通常承載于TCP之上共耍,如果是承載于TLS或SSL之上,就是常說的HTTPS了吨瞎。
http詳解:http://www.blogjava.net/zjusuyong/articles/304788.html
tcp/ip協(xié)議簇詳解:http://blog.csdn.net/goodboy1881/article/category/204448
URL的組成部分:
?協(xié)議
協(xié)議確定如何傳輸請求痹兜。我們主要是處理http和https。其他常見的協(xié)議還有file和ftp颤诀。
?主機名主機名標識服務(wù)器字旭。運行在本地計算機(localhost)和本地網(wǎng)絡(luò)的服務(wù)器可以簡單地表示,比如用一個單詞,或一個數(shù)字IP地址。在Internet環(huán)境下,主機名通常以一個頂級域名(TLD)結(jié)尾,比如.com或.net崖叫。另外,也許還會有子域名作為主機名的前綴遗淳。子域名可以是任何形式的,其中www最為常見。子域名通常是可選的心傀。
?端口
每一臺服務(wù)器都有一系列端口號洲脂。一些端口號比較“特殊”,如80和443端口。如果省略端口值,那么默認80端口負責HTTP傳輸,443端口負責HTTPS傳輸。如果不使用80和443端口,就需要一個大于10231的端口號恐锦。通常使用容易記憶的端口號,如3000、8080或8088疆液。
?路徑
URL中影響應(yīng)用程序的第一個組成部分通常是路徑(在考慮協(xié)議一铅、主機名和端口的基礎(chǔ)上做決定很合理,但是不夠好)。路徑是應(yīng)用中的頁面或其他資源的唯一標識堕油。
?查詢字符串查詢字符串是一種鍵值對集合,是可選的潘飘。它以問號(?)開頭,鍵值對則以與號(&)分隔開。所有的名稱和值都必須是URL編碼的掉缺。對此,JavaScript提供了一個嵌入式的函數(shù)encodeURIComponent來處理卜录。例如,空格被加號(+)替換。其他特殊字符被數(shù)字型字符替換眶明。
?信息片段
信息片段(或散列)被嚴格限制在瀏覽器中使用,不會傳遞到服務(wù)器艰毒。用它控制單頁應(yīng)用或AJAX富應(yīng)用越來越普遍。最初,信息片段只是用來讓瀏覽器展現(xiàn)文檔中通過錨點標記(<a id="chapter06">)指定的部分搜囱。
請求和響應(yīng):
頭部信息詳解:http://xiejiaming.com/195.html
請求報頭
我們?yōu)g覽網(wǎng)頁時,發(fā)送到服務(wù)器的并不只是URL丑瞧。當你訪問一個網(wǎng)站時,瀏覽器會發(fā)送很多“隱形”信息。服務(wù)器會因此得知優(yōu)先響應(yīng)哪種語言的頁面(例如,在西班牙下載Chrome瀏覽器,如果有西班牙語的版本,就會接收到一個西班牙語的訪問頁面)蜀肘。它也會發(fā)送“用戶代理”信息(瀏覽器绊汹、操作系統(tǒng)和硬件設(shè)備)和其他一些信息。所有能夠確保你了解請求對象頭文件屬性的信息都將會作為請求報頭發(fā)送扮宠。
響應(yīng)報頭
正如瀏覽器以請求報頭的形式發(fā)送隱藏信息到服務(wù)器,當服務(wù)器響應(yīng)時,同樣會回傳一些瀏覽器沒必要渲染和顯示的信息,通常是元數(shù)據(jù)和服務(wù)器信息西乖。我們已經(jīng)熟悉內(nèi)容類型頭信息,它告訴瀏覽器正在被傳輸?shù)膬?nèi)容類型(網(wǎng)頁、圖片坛增、樣式表获雕、客戶端腳本等)。特別要注意的是,不管URL路徑是什么,瀏覽器都根據(jù)內(nèi)容類型報頭處理信息轿偎。因此你可以通過一個叫作/image.jpg的路徑提供網(wǎng)頁,也可以通過一個叫作/text.html的路徑提供圖片典鸡。(這樣做并不合情理,這里要講的重點是路徑是抽象的,瀏覽器只根據(jù)內(nèi)容類型來決定內(nèi)容該如何渲染。)除了內(nèi)容類型之外,報頭還會指出響應(yīng)信息是否被壓縮,以及使用的是哪種編碼坏晦。響應(yīng)報頭還可以包含關(guān)于瀏覽器對資源緩存時長的提示萝玷。響應(yīng)報頭還經(jīng)常會包含一些關(guān)于服務(wù)器的信息,一般會指出服務(wù)器的類型,有時甚至會包含操作系統(tǒng)的詳細信息。返回服務(wù)器信息存在一個問題,那就是它會給黑客一個可乘之機,從而使站點陷入危險昆婿。非常重視安全的服務(wù)器經(jīng)常忽略此信息,甚至提供虛假信息球碉。
互聯(lián)網(wǎng)媒體類型
內(nèi)容類型報頭信息極其重要,沒有它,客戶端很難判斷如何渲染接收到的內(nèi)容。內(nèi)容類型報頭就是一種互聯(lián)網(wǎng)媒體類型,由一個類型仓蛆、一個子類型以及可選的參數(shù)組成睁冬。例如,text/html;charset=UTF-8說明類型是text,子類型是html,字符編碼是UTF-8。互聯(lián)網(wǎng)編號分配機構(gòu)維護了一個官方的互聯(lián)網(wǎng)媒體類型清單(http://www.iana.org/assignments/media-types/media-types.xhtml)豆拨。我們常見的content type直奋、Internet media type和MIME type是可以互換的。MIME(多用途互聯(lián)網(wǎng)郵件擴展)是互聯(lián)網(wǎng)媒體類型的前身,它們大部分是相同的施禾。
請求體
除請求報頭外,請求還有一個主體(就像作為實際內(nèi)容返回的響應(yīng)主體一樣)脚线。一般GET請求沒有主體內(nèi)容,但POST請求是有的。POST請求體最常見的媒體類型是application/x-www-form-urlendcoded,是鍵值對集合的簡單編碼,用&分隔(基本上和查詢字符串的格式一樣)弥搞。如果POST請求需要支持文件上傳,則媒體類型是multipart/form-data,它是一種更為復雜的格式邮绿。最后是AJAX請求,它可以使用application/json。
參數(shù)
“參數(shù)”這個詞可以有很多種解釋,它通常是困惑的源頭攀例。對于任何一個請求,參數(shù)可以來自查詢字符串船逮、會話(請求cookies)、請求體或指定的路由參數(shù)粤铭。