URL基本格式
< scheme>://< user>:< password>@< host>:< port>/< path>;< params>?< query>#< frag>
通用的URL組件
組件 | 描述 | 默認值 |
---|---|---|
方案 | 獲取資源要使用的協議 | 無 |
用戶 | 用戶名 | 匿名 |
密碼 | 跟在用戶名后面,用冒號(:)隔開 | <e-mail地址> |
主機 | 主機名或者ip地址 | 無 |
端口 | 各個方案特有的默認端口 | 方案特有 |
路徑 | 可以多個,以斜杠(/)分割,可以加參數([;params]) | 無 |
查詢 | ?name=bob&age=3 | 無 |
片段 | #title,只是給瀏覽器識別,不能分割資源 | 無 |
方案
不區分大小寫,http與HTTP是一樣一樣的
主機與端口
既可以是域名,也可以是ip地址
用戶名與密碼
用戶不填就是匿名,并發 送一個默認的密碼( Internet Explorer 會發送 IEUser, Netscape Navigator 則會發送 mozilla)
路徑
路徑參數在每個路徑段都可以有
eg: http:// www. joes- hardware. com/ hammers; sale= false/ index. html; graphics= true
查詢字符串
eg: https://baike.baidu.com/item/URL%E6%A0%BC%E5%BC%8F/10056474?fr=aladdin
片段
#錨點,給客戶端識別用的,并不能切割資源
相對URL(舉個栗子)
xxx/xxx.html node_modules目錄or當前目錄(看解析方式)
/xxx/xxx.html 根目錄
./xxx/xxx.html 當前目錄
../xxx/xxx.html 上級目錄
../../xxx/xxx.html 上上級目錄
自動拓展URL
主機名拓展 與 歷史拓展(瀏覽器的甜點)
baidu => www.baidu.com
令人頭痛的的字符
設計url的人希望可以被人類閱讀,又不希望丟失不可見,不可打印的字符,于是需要對不安全的字符進行轉義。
不安全的字符: 尼瑪其實就是老外不認識的字兒,比如我們漢字目錄,有些程序不識別,就會報錯,就不安全咯!當然不止這些咯
方案的世界
方案 | 描述 |
---|---|
http | 默認端口:80 http://< host>:< port>/< path>?< query>#< frag> |
https | 默認端口443 格式同上 |
mailto | mailto: joe@ joes- hardware. com |
ftp | 基本格式: ftp://< user>:< password>@< host>:< port>/< path>;< params> 示例: ftp:// anonymous: joe% 40joes- hardware. com@ prep. ai. mit. edu: 21/ pub/ gnu/ |
rtsp ,rtspu | RTSP URL 是可以通過實時流傳輸協議( Real Time Streaming Protocol) 解析的音/ 視頻媒體資源的標識符。 方案 rtspu 中的 u 表示它是使用 UDP 協議來獲取資源的。 基本格式: rtsp://< user>:< password>@< host>:< port>/< path> rtspu://< user>:< password>@< host>:< port>/< path> 示例: rtsp:// www. joes- hardware. com:554/ interview/ cto_video |
file | 在桌面建個html文件,雙擊就可以在瀏覽器看到效果 |
news | 用來訪問新聞與新聞組 news:< newsgroup> news:< news- article- id> 示例: news: rec. arts. startrek |
telnet | 用于訪問交互式業務 |
展望未來
URL的缺點是,路徑對應文件,移動文件這個URL就失效了.
URN 一個名字對應一個文件,不管文件在哪個服務器,感覺有點MD5的味道
PURL 永久統一資源定位符,URL對URN的實現,中間加入一個尋址層,文件變動需要在這里注冊,實現實時更新地址