但其實(shí),叫做 "網(wǎng)址" 并不是特別的準(zhǔn)確,確切的說(shuō),應(yīng)該叫做 URL

到底啥是URL那到" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

所在位置: 首頁(yè) > 營(yíng)銷(xiāo)資訊 > 建站知識(shí) > 什么是URL?

什么是URL?

時(shí)間:2023-01-30 18:36:01 | 來(lái)源:建站知識(shí)

時(shí)間:2023-01-30 18:36:01 來(lái)源:建站知識(shí)

一般我們?nèi)粘T谏暇W(wǎng)的時(shí)候,會(huì)在瀏覽器的地址欄里輸入一個(gè)網(wǎng)站的 "網(wǎng)址",點(diǎn)擊下回車(chē),就會(huì)跳到你想去的網(wǎng)站,就類(lèi)似這樣







但其實(shí),叫做 "網(wǎng)址" 并不是特別的準(zhǔn)確,確切的說(shuō),應(yīng)該叫做 URL

到底啥是URL

那到底啥是 URL 呢? 不就是一個(gè)網(wǎng)址嗎?

URL 是英文 Uniform Resource Locator 的縮寫(xiě),即統(tǒng)一資源定位器,是因特網(wǎng)上用于指定信息位置的表示方法,通過(guò)它就能找到網(wǎng)上的某個(gè)你要的資源

URL的組成

雖然我們平時(shí)使用瀏覽器的時(shí)候,只要輸入baidu.com或者qq.com就能正常上網(wǎng)了,但其實(shí)我們輸入的只是整個(gè)URL中的一小部分

來(lái),我先看看一個(gè)相對(duì)完整的URL的整體結(jié)構(gòu)是怎么樣的







這里大致分了幾個(gè)部分,我們一個(gè)個(gè)來(lái)看,它們具體是干什么的

協(xié)議

圖中http://這部分就是協(xié)議部分,即指定了URL是以什么協(xié)議發(fā)送網(wǎng)絡(luò)請(qǐng)求的

常見(jiàn)的協(xié)議如:http://、https://ftp://、file://,比如: http://就是超文本傳輸協(xié)議,平時(shí)上網(wǎng)大多用這個(gè)協(xié)議,https://是以安全為目標(biāo)的HTTP協(xié)議。

地址

圖中localhost就是地址部分,用來(lái)確定URL所要訪(fǎng)問(wèn)的服務(wù)器的網(wǎng)絡(luò)地址(也就是網(wǎng)址)。在URL中,地址可以用三個(gè)形式來(lái)表示:域名、主機(jī)名IP地址

域名

我們平時(shí)輸入的www.baidu.com、www.qq.com就是域名,域名也分一級(jí)域名、二級(jí)域名、以及頂級(jí)域名。

不過(guò),域名也只是一串文字,計(jì)算機(jī)和路由器并不能直接認(rèn)出它,還需要通過(guò)DNS服務(wù)器找到域名對(duì)應(yīng)的IP地址,再通過(guò)底層的TCP/IP協(xié)議路由到對(duì)應(yīng)的機(jī)器上去 (這些內(nèi)容不是本文的重點(diǎn)暫時(shí)略過(guò),先挖個(gè)坑再說(shuō))

主機(jī)名

主機(jī)名就是某臺(tái)計(jì)算機(jī)的名字,在一個(gè)局域網(wǎng)內(nèi),可以通過(guò)主機(jī)名找到你要訪(fǎng)問(wèn)的計(jì)算機(jī)。主機(jī)名和域名一樣,計(jì)算機(jī)和路由器不認(rèn)它,需要通過(guò)HOSTS文件這樣的技術(shù)找到主機(jī)名IP地址的關(guān)聯(lián)關(guān)系,最后還是翻譯成IP地址再繼續(xù)發(fā)送網(wǎng)絡(luò)請(qǐng)求

圖中的localhost也是主機(jī)名,但是一種比較特殊的主機(jī)名,是給 回環(huán)地址的一個(gè)標(biāo)準(zhǔn)主機(jī)名,就是代表本機(jī)自己的地址。

IP地址

在URL中也可以直接用IP地址來(lái)代替域名或主機(jī)名,如192.168.0.1,關(guān)于IP地址的相關(guān)知識(shí)點(diǎn)放到以后再講(繼續(xù)挖坑)

端口號(hào)

圖中在冒號(hào):后面的那串?dāng)?shù)字8080就是端口號(hào),一臺(tái)服務(wù)器上可以開(kāi)多個(gè)端口號(hào),往往一個(gè)網(wǎng)絡(luò)服務(wù)程序就對(duì)應(yīng)一個(gè)端口號(hào)

比如,我在機(jī)器 A 上,開(kāi)了兩個(gè)服務(wù)程序,分別是 TomcatSSH,讓它們分別關(guān)聯(lián)端口808022,那URL中如果端口號(hào)是8080就是會(huì)訪(fǎng)問(wèn)到Tomcat程序,22就會(huì)連接SSH服務(wù)。

但可能有小伙伴會(huì)有疑問(wèn):誒,我平時(shí)上百度看到的URL是http://www.baidu.com沒(méi)看到有端口號(hào)啊

其實(shí)是有的,端口號(hào)是80,只是它被隱藏起來(lái)了,我們看不到而已,而這個(gè)80端口也就是URL的默認(rèn)端口號(hào)

但不是所有URL的默認(rèn)端口號(hào)都是80,如果協(xié)議是http://,默認(rèn)端口號(hào)為80,但若是https://協(xié)議,默認(rèn)端口號(hào)就是443

虛擬目錄

從第一個(gè)斜杠/開(kāi)始,到最后一個(gè)斜杠/結(jié)束的那部分,也就是圖中/app/user/那部分即為虛擬目錄

它就類(lèi)似我們電腦中文件目錄的格式,第一個(gè)/為根目錄,每多一個(gè)/就多進(jìn)入一層目錄

文件名

從域名后開(kāi)始算起的最后一個(gè)斜杠/開(kāi)始,到?為止,沒(méi)有?則到#為止,或者?#都沒(méi)有就是到整個(gè)URL結(jié)束為止的那部分就為文件名

說(shuō)起來(lái)很繞吧,其實(shí)就是圖中 info.do 這部分,它一般包含文件名和擴(kuò)展名('.'后面那部分),用來(lái)指代一個(gè)URL所訪(fǎng)問(wèn)的具體文件或資源,它可以是圖片、html文件、css文件,也可以是js文件、字體文件等等,它也可以不是某種文件,而是服務(wù)端后臺(tái)執(zhí)行的某段程序。

甚至可以省略不寫(xiě)虛擬目錄和文件名,因?yàn)樗鼈儽緛?lái)就不是必須的,就如http://www.baidu.com這樣的URL就沒(méi)有文件名,但服務(wù)器會(huì)在缺省的情況下給你定位到某個(gè)特定的文件或程序上去。

查詢(xún)參數(shù)

?后到#結(jié)束,即圖中的?uid=101&ty=2為查詢(xún)參數(shù)

查詢(xún)參數(shù),也稱(chēng)為URL參數(shù)、查詢(xún)字符串,英文名為 Query,它是用來(lái)向服務(wù)端以字符串的形式傳遞參數(shù)和少數(shù)數(shù)據(jù)用的

其參數(shù)形式一般都以多個(gè)鍵值對(duì)的形式進(jìn)行表示,如 a=1、b=2就是兩個(gè)鍵值對(duì),鍵為"a"和"b",值為對(duì)應(yīng)的"1"和"2", 多個(gè)鍵值對(duì)&連起來(lái):a=1&b=2

URL編碼

但參數(shù)要傳遞的某些值往往帶有特殊字符,這些字符和URL標(biāo)準(zhǔn)的格式?jīng)_突,比如要傳a&b這樣字符串,和查詢(xún)參數(shù)鍵值對(duì)的連接符&沖突了,若不加以區(qū)分就會(huì)產(chǎn)生歧義

而最簡(jiǎn)單的辦法,就是對(duì)參數(shù)值進(jìn)行編碼,稱(chēng)為 URL Encoding,通過(guò)編碼,a&b變成了a%26b,就不再包含會(huì)沖突的特殊字符

而有些參數(shù)即便有特殊字符,也不會(huì)被編碼,除非自行強(qiáng)制編碼,比如URL中參數(shù)值是另外一串URL,就可以寫(xiě)成 http://localhost/do?url=http://www.baidu.com
這種特殊情況不會(huì)有歧義,因?yàn)橛?jì)算機(jī)系統(tǒng)認(rèn)得出參數(shù)是另一串URL,就會(huì)按URL的形式來(lái)解析,但當(dāng)子URL又包含子參數(shù)和多子鍵值對(duì)的時(shí)候也難免會(huì)分不清參數(shù)到底是兒子的還是父親的,這時(shí)還是強(qiáng)制編碼的好

列表參數(shù)

URL的參數(shù)是一個(gè)個(gè)鍵值對(duì),即一個(gè)key對(duì)應(yīng)一個(gè)value,那如果是一個(gè)key要傳遞多個(gè)值,也就是一個(gè)列表咋辦?也好辦

URL的參數(shù)名是可以重復(fù)的,比如a=1&a=2&a=3,這里穿了3個(gè)參數(shù)名都為a的查詢(xún)參數(shù),是完全可以的,可以利用這種特性,按順序?qū)?1、2、3作為參數(shù)a的列表值

為了表示更清楚點(diǎn),一般都會(huì)在列表參數(shù)名后面加上一對(duì)方括號(hào)[],如:a[]=1&a[]=2&a[]=3

但是,對(duì)于URL參數(shù)的寫(xiě)法和格式的標(biāo)準(zhǔn),也沒(méi)有特別嚴(yán)格的規(guī)定,以上幾種形式一般都會(huì)支持

圖中#后面那部分字符串,#abc就是錨部分

錨,英文稱(chēng)做Reference,通常也是用來(lái)傳遞參數(shù)等信息,但與查詢(xún)參數(shù)的本質(zhì)區(qū)別就是這部分內(nèi)容不會(huì)被傳遞到服務(wù)器端

錨一般用于頁(yè)面,比如在瀏覽網(wǎng)頁(yè)的時(shí)候,按個(gè)按鈕突然幫你定位到頁(yè)首或頁(yè)面中的某個(gè)位子去了,這就是錨

現(xiàn)在隨著前后端分離技術(shù),尤其是 vue、reactjs 等前端框架的興起,錨作為前端javascript程序處理的參數(shù)載體也越來(lái)越重要了

關(guān)鍵詞:

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉