如何發(fā)起一個htpp請求
簡單的說,發(fā)起一個HTTP請求的過程就是建立一個Socket通信的過程,且HTTP請求的數據格式要符合htpp協議的規(guī)定。
了解http協議中的header
列舉幾個常見的屬性,詳見 developer.mozilla - HTTP Headers
| 請求頭 Request Header | 說明 |
|---|---|
| Accept-Charset | 用于指定客戶端接受的字符集 |
| Accept-Encoding | 可接受的內容編碼 |
| Accept-Language | 自然語言 比如zh-cn |
| Host | 指定被請求資源的Internet主機和端口號 |
| User-Agent | 客戶端將它的操作系統、瀏覽器和其他屬性告訴服務器 |
| Connection | 當前連接是否保持 |
| Referer | 首部包含了當前請求頁面的來源頁面的地址,即表示當前頁面是通過此來源頁面里的鏈接進入的。服務端一般使用 Referer 首部識別訪問來源,可能會以此進行統計分析、日志記錄以及緩存優(yōu)化等 |
| Pragma | no-cache |
| Cache-Control | no-cache |
ctrl + F5 強制頁面刷新,會在請求頭中增加這兩個參數,或者改變參數值為no-cache。此外,還有一種前端編程請求解決緩存的方法,在ajax請求中加入時間戳,保證每次請求的URL和參數不一致,避免了瀏覽器檢測到相同的請求,從而使用緩存數據
| 響應頭Request Header | 說明 |
|---|---|
| Server | 使用的服務器名稱 |
| Content-type | 指明發(fā)送給接受者的實體正文的媒體類型,如Content_Type:text/html;charset = GBK |
| Content-Encoding | 告訴瀏覽器服務端采用的壓縮編碼 |
| Content-Language | 描述了資源所用的自然語言 |
| Content-Length | 指明實體正文的長度 |
| Keep-Alive | 保持連接的時間 |
HTTP請求過程
簡要介紹用戶在瀏覽器輸入網址之后看到頁面的過程
用戶輸入網址即URLm.itdecent.cn
-
DNS將域名解析成IP地址
瀏覽器從瀏覽器的緩存中查找解析過的域名對應的IP,如果找到,直接返回IP地址,后續(xù)步驟不執(zhí)行
如果瀏覽器緩存中未找到,則從瀏覽器所安裝在的終端(PC電腦)緩存中尋找,windows操作系統C:\Windows\System32\drivers\etc\hosts文件中,可配置域名與對應的IP地址,如果找到,直接返回IP地址,后續(xù)步驟不執(zhí)行
-
見網絡3D結構圖
DNS解析過程圖.png名詞解釋
Local DNS Server:本地域名解析服務器,比如說,學校的網絡,會在學校有一臺域名解析服務器;家庭網絡,運營商(電信、聯通)會有域名解析服務器
Root DNS Server:頂級域名服務器,全球只有13臺,大部分在美國
gTLD Servr:國際頂尖域名服務器,如.com .cn .org等
Name Server:域名直接注冊的地方,比如阿里云騰訊云域名注冊
用戶瀏覽器根據IP地址向服務器發(fā)起請求
服務器端發(fā)回請求響應數據給瀏覽器
數據返回后,瀏覽器解析數據發(fā)現還有一些靜態(tài)的資源(css,js,img),然后再次發(fā)起請求
