初步瞭解URL(介面測試必備)

deeply發表於2021-09-09

最近開始學習,必須瞭解http協議,瞭解http協議之前還得了解URL。哎,學習了才知道自己欠缺多少東西啊。
以下是我在別的地方看到了。記下來,以免以後找不到了。

URL 組成部分

當你看到一個 URL,比如 ,其實是由幾個元件構成的。我們可以把這個 URL 分解成 3 部分:
• http :通常被稱為 URL 模式( scheme )。總是出現在冒號和兩個斜槓之前,作用是告訴 web 客戶端怎樣去訪問一個資源。在本例中,它告訴 web 客戶端使用超文字傳輸協議也就是 HTTP 去發起一個請求。常見的 URL 模式還有 ftp,mailto和git。
• :URL 的第二個部分,就是資源路徑或主機 (host)。它告訴客戶端,資源的確切位置。
• /home/ :URL 的第三個部分就是 URL 路徑。它代表了客戶端正在請求什麼樣的本地資源 (對於伺服器來說)。
有時候,這個路徑指向了一個主機上特定的資源。比如, /home/index.html 指向了 example.com 伺服器上的一個 HTML 檔案。

另外,URL 可以包含一個主機用來監聽 HTTP 請求的埠號。一個 這樣的 URL,透過 3000 埠去監聽 HTTP 請求。web 客戶端用來監聽 HTTP 請求的預設埠號是 80,如果一個 URL 中沒有指定其他的埠號,那就等價於寫了80 除非指定了其他的埠號代替,不然埠號80會被預設用於正常的 HTTP 請求。

查詢字串 / 引數

一個查詢字串或者引數是 URL 的一部分並且通常都包含一些要發往至伺服器的各種型別的資料。一個簡單的帶查詢字串的 URL 長這樣:

讓我們拆開來看看:
? 這是個保留字,標識著查詢字串的開始
search=ruby 這是一個引數的鍵/值對兒
& 這是個保留字,需要給查詢字串新增引數時使用
rasult=10 這也是一個引數的鍵/值對兒

現在我們再來看一個例子。假設我們有下面這個 URL:

在上面這個例子裡,鍵/值對兒 product=iphone , size=32gb , color=white 透過 URL 傳給了伺服器。這個請求告訴 的伺服器,把要請求的資源條件限制在 產品 iphone , 大小 32gb 和 顏色白色 。伺服器怎麼樣使用這些引數取決於服務端的應用的處理邏輯。

另一個經常見到查詢字串的情況是當你在搜尋引擎上搜尋東西的時候。因為查詢字串是透過 URL 傳遞的,他們僅使用 HTTP 的 GET 請求。在本書後面的章節裡我們會討論不同的 HTTP 請求,但是現在你所需要知道的是,當你不論什麼時候在瀏覽器的位址列裡輸入網址進行瀏覽的時候,你就是在發起 HTTP 的 GET 請求。大部分超連結都是 HTTP 的 GET 請求,偶爾會有一些例外。
使用查詢字串向伺服器傳遞附加資訊是個很棒的方法,但是對於查詢字串的使用,以下是一些限制:
•查詢字串有最大長度。所以,如果你大量的資料需要傳輸,還是不要用查詢字串的好。
•查詢字串中使用的鍵/值對兒是顯示在 URL 上的。所以,不推薦用查詢字串傳輸敏感資訊比如使用者名稱或密碼。
•查詢字串中無法使用空格和特殊字元比如 & 。它們必須用 URL 編碼代替,我們接下來會討論這個。

URL 編碼 (URL Encoding)

URL 在設計的時候就預設只接受 ASCII 碼。因此,不安全的或者不是 ASCII 碼的字元就要進行轉義或者編碼來適應這個格式。URL 編碼的原理是將不符合格式的字元替換成 % 開頭後面跟著兩個十六進位制數字代表的 ASCII 碼的一串字元。

下面是一些常見的 URL 編碼和例項 URL:
space 020
! 041

  • 053
    符合下列條件的字元都要進行編碼處理:
    1.沒有對應的 ASCII 碼。
    2.字元的使用是不安全的。比如 % 就是不安全的,因為它經常用於對其它字元進行轉義。
    3.字元是有特殊用途的 URL 模式保留字。有些字元用於保留字是有著特殊的意義;它們在 URL 中的存在具有特殊用途。比如 / , ? , : ,和 & ,都是需要進行編碼的保留字。

比如 & 被保留用於查詢字串的分隔符。 : 也被保留用於分隔主機/埠號和使用者名稱/密碼。

那麼什麼樣的字元能在 URL 裡安全地使用呢?只有字母表裡的和 $-_.+!'()," 這些字元。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1978/viewspace-2798318/,如需轉載,請註明出處,否則將追究法律責任。

相關文章