使用相對url,可以引用同一服務器的其它資源,相對url缺失的部分,由發起引用的那個url自身的信息補齊。如果url字符串不是以一個有效的協議名開始,后面沒有跟著冒號,又或者沒有那個有效的“//”分隔符,那該url就是一個需要被引用的相對url。
相對url大體大體可以分為5種情況,其解析規則如下:
(1)有協議名稱,但沒有域名信息
對于這種形式的url,它的協議,路徑,查詢字符串和片段ID都以它自身為準,但域名信息的部分,以引用它的那個頁面地址為準。
(2)沒有協議名,但有域名信息
在這種情況下,協議名稱由原發起頁面確定,而所有接下來的url信息都取自這個相對url,構成完整的url。
(3)沒有協議名,沒有域名信息,但有路徑
這種情況下分為兩種結果,如果相對url的開頭不是斜杠,則相對路徑會拼接在引用url最右邊的“/”后面,如果最右邊是文件名,則要砍掉文件名。另外如果相對url的開頭確實是個斜杠,則應該忽略引用頁面自身的路徑信息,直接把相對路徑拼在引用url的域名后面。
(4)沒有協議名,沒有域名信息,沒有路徑,但有查詢字符串
這種情況下,協議,域名,路徑信息全部原封不動的從原引用url復制過來,查詢字符串和片段ID則來自相對url。
(5)只有片段ID
只替換片段ID的部分,其他所有信息全部原封不動的從原引用url復制過來。