之前的文章已經介紹了 HTTP 請求方法的種類、安全方法以及冪等性方法,接下來我們將深入 HTTP 封包的 request line 的下個部分,也就是 URI 的部分,進一步解析它在請求中的作用與結構。
如果已經忘記 HTTP 封包結構的話,可以再回顧一下這篇文章,那就開始今天的主題吧!
當你知道一個人的「地址和名字」。這兩個資訊可以幫助你唯一地識別這個人。無論你選擇用地址還是名字,都能聯絡到這個人。這就是 URI 的功能:它提供了一個唯一的方式來識別一個資源,不管這個資源是透過名字還是具體的地址來找到。
URL(Uniform Resource Locator,統一資源定位符),也就是常見的網址,通常格式可能如下:
https://www.youtube.com/@LaravelPHP
https
代表使用的協定是 HTTPwww.youtube.com
指的是網域名稱,指向某個特定的伺服器或服務@LaravelPHP
指的是路徑(path),標識出在 YouTube 平台上的 LaravelPHP 這個頻道。也可以根據以下場景進行理解:
你只知道某人的「地址」。雖然你不確定他的名字,但你可以直接根據這個地址找到並聯絡他。URL 的作用就是提供了具體的路徑,告訴你該去哪裡找到這個資源。你可以把 URL 當作是資源的具體位置,而不需要知道它的其他細節。
以下內容引用自RFC 3986:
A URI can be further classified as a locator, a name, or both. The
term "Uniform Resource Locator" (URL) refers to the subset of URIs
that, in addition to identifying a resource, provide a means of
locating the resource by describing its primary access mechanism
(e.g., its network "location").
URI 可以進一步被分類為定位器、名稱,或者兩者皆有。而 URL 其實就是一種特定形式的 URI,除了標識資源之外,也會通過描述它的網絡位置或存取方法告訴使用者要去哪裡找到這個資源。
可以將 URI 視為一個抽象的標識唯一資源的概念,而 URL 則是 URI 的一種具體實現的形式,也就是說 URL 一定會是 URI ,但是 URI 不一定會是 URL。我看完這部影片之後對於這兩者的差異有比較深的理解,如果看完文章還是霧煞煞的話可以參考看看!
關於 URI 以及 URL 的問題困惑我許久,看了一些文件也是沒有很懂QQ,就我目前的理解寫成今天的文章,如果有什麼可以補充或是錯誤的,都很歡迎討論~~
明天就會開始來介紹關於 HTTP 協定的版本拉,那就明天見拉!
RFC 3986
URIs, URLs, and URNs | Difference between URI and URL | URL Explained
What is the difference between a URI, a URL, and a URN?
MDN