不知道是不是開學的原因,最近都沒學習,我還是隨手敲點東西來記錄下吧。
HTTP權威指南是在上個月的時候看的,對於HTTP服務器的理解還是有很大的幫助的。
首先是,HTTP概述
媒體類型,MIME,這個類型是由http服務器負責寫入http報文的,即爲傳輸的對象數據附加一個數據類型的標籤。瀏覽器從服務器取回對象時,會去查看相關的標籤,即MIME類型,然後確定處理的方式。MIME類型的信息寫在HTTP報文的首部,content-type:text/html 這是常見的HTML格式的類型標記,主要類型/子類型。
URL,URL由三個部分組成,方案、地址(主機位置)、資源位置。
通過URL獲取資源,如果向一個瀏覽器提供一個FTP URL,但沒有指定用戶名和密碼,瀏覽器會爲你插入默認的用戶名和密碼,即匿名用戶。使用字符@將用戶和密碼組件與URL的其餘部分分隔開,用戶和密碼用:分隔。
URL的查詢字符串後面加?
URL支持使用片段組件,來表示一個資源內部的片段。#表示。
但是事實上,服務器處理的是整個對象,URL片段僅由客戶端使用。客戶端不能將片段傳送給服務器,瀏覽器獲取了服務器的整個資源後,根據片段來顯示你最感興趣的那部分資源。
HTTP事務,由一條請求命令和一個響應結果組成。
客服端發送的HTTP請求報文,起始行,首部
服務器發送的HTTP響應報文,起始行,首部,主體
火狐瀏覽器的請求報文,在瀏覽器中鍵入主機名
GET / HTTP/1.1
Host: 127.0.0.1:9999
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
該報文的起始行有三個部分,方法,資源路徑,版本信息
這裏的資源路徑是URL中後面的一部分,在實際的報文解析中,需要考慮空格等特殊符號出現時,是會被轉換的。
HTTP規範裏說明應該用CRLF 回車符+換行符 當做行終結序列