關(guān)于URL
當(dāng)你看到一個 URL,比如 http://www.example.com/home 其實是由幾個組件構(gòu)成的。我們可以把這個 URL 分解成 3 部分:
<ul>
<li>http:作用是告訴 web 客戶端怎樣去訪問一個資源。在本例中,它告訴 web 客戶端使用超文本傳輸協(xié)議也就是 HTTP 去發(fā)起一個請求兼都。常見的 URL 模式還有ftp,mailto和git稽寒。</li>
<li>www.example.com:URL 的第二個部分扮碧,表示主機(jī) (host)。</li>
<li>/home/:URL 的第三個部分就是 URL 路徑。它代表了資源在服務(wù)器的哪一個位置慎王。</li>
</ul>
關(guān)于端口
比如 http://www.example.com/home 蚓土,他指明了服務(wù)器的主機(jī)ip(通過dns協(xié)議),但是他并沒有指明服務(wù)器的端口赖淤。其實url在沒有指明端口的情況下北戏,默認(rèn)的端口是80。但是也可以指明端口漫蛔,比如你的url也可以是這樣嗜愈。 http://localhost:3000/profile,3000 指明了服務(wù)器的端口是3000莽龟。
查詢字符串 / 參數(shù)
一個查詢字符串或者參數(shù)是 URL 的一部分并且通常都包含一些要發(fā)往至服務(wù)器的各種類型的數(shù)據(jù)蠕嫁。一個簡單的帶查詢字符串的 URL 長這樣:
使用查詢字符串向服務(wù)器傳遞附加信息是個很棒的方法,但是對于查詢字符串的使用毯盈,以下是一些限制:
<ul>
<li>查詢字符串有最大長度剃毒。所以,如果你大量的數(shù)據(jù)需要傳輸搂赋,還是不要用查詢字符串的好赘阀。</li>
<li>查詢字符串中使用的鍵/值對兒是顯示在 URL 上的。所以脑奠,不推薦用查詢字符串傳輸敏感信息比如用戶名或密碼基公。</li>
<li>查詢字符串中無法使用空格和特殊字符比如&。它們必須用 URL 編碼代替宋欺,我們接下來會討論這個轰豆。</li>
</ul>
URL 在設(shè)計的時候就默認(rèn)只接受 ASCII 碼。因此齿诞,不安全的或者不是 ASCII 碼的字符就要進(jìn)行轉(zhuǎn)義或者編碼來適應(yīng)這個格式酸休。URL 編碼的原理是將不符合格式的字符替換成%開頭后面跟著兩個十六進(jìn)制數(shù)字代表的 ASCII 碼的一串字符。
好像看過一些文章祷杈,好多網(wǎng)頁劫持的原理就是通過這個斑司。
參考資料:
《http 下午茶》
《Introduction to HTTP》 這個英文的寫的很好,強(qiáng)烈推薦但汞。https://launchschool.com/books/http