什么是File協(xié)議
字面意思:本地文件傳輸協(xié)議
什么是File:
file協(xié)議主要用于訪問本地計(jì)算機(jī)中的文件,好比通過Windows的資源管理器中打開文件或者通過右鍵單擊‘打開’一樣。
如何使用:
file協(xié)議的基本格式如下:
比如需要打開E盤下txt目錄中的index.txt,那么在資源管理器或者瀏覽器地址欄中輸入:file:///E:/txt/index.txt。用file:///+文件地址,其實(shí)等價(jià)于文件的地址。即:
file:///C:/Users/CLi/AppData/Local/Temp/WindowsLiveWriter1627300719/supfiles52F410/wangdan-se-436963[2].jpg
等價(jià)于:
C:/Users/CLi/AppData/Local/Temp/WindowsLiveWriter1627300719/supfiles52F410/wangdan-se-436963[2].jpg

URI中問什么本地文件file后面跟三個(gè)斜杠?
URI的結(jié)構(gòu)為:
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
如果有host,前面需要加//,因此對(duì)于http或https等網(wǎng)絡(luò)地址來說會(huì)寫成:
https://blog.csdn.net/lishanleilixin/article/category/7191777

這樣看上去很自然。如果是文件的話,文件沒有host,所以中間的host部分就不要了,就變成了:
file:///lishanleilixin/article/category/7191777
因?yàn)槿绻麤]有host的話,第一個(gè)[]的內(nèi)容就不存在了,這種同意的寫法有一個(gè)標(biāo)準(zhǔn)叫CURIE。
什么是http協(xié)議
簡介:
http協(xié)議是Hyper Text JTransfer Protocol,即超文本闡述協(xié)議的縮寫。是用來從萬維網(wǎng)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議,基于TCP/IP通信協(xié)議來傳輸數(shù)據(jù)。http協(xié)議工作于客戶端-服務(wù)器架構(gòu)上,瀏覽器作為http客戶端通過url向http服務(wù)器端發(fā)送請(qǐng)求,服務(wù)器接收到請(qǐng)求后,向客戶端發(fā)送請(qǐng)求。

HTTP的URL:
http使用統(tǒng)一資源標(biāo)識(shí)符URI來傳輸數(shù)據(jù)和建立連接。而URL是一種特殊類型的URI。
https://www.baidu.com/s?wd=csdn&rsv_spt=1&rsv_iqid=0xe20f5fa6000102e9&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=62095104_9_oem_dg&rsv_enter=0&oq=http%25E5%258D%258F%25E8%25AE%25AE&rsv_t=cb7eJrt8QfdumTZWig9t5bWhzpKMGLyic5Ap1V%2BZyjA0%2Bsb90A7ykpqzyVk7WUQpEpUaayWEhYo&rsv_pq=876fe1b90002819e&inputT=496865&rsv_sug3=107&bs=http%E5%8D%8F%E8%AE%AE

完整的URL包含下面幾個(gè)部分:
協(xié)議:該URL的協(xié)議部分為“https”,標(biāo)識(shí)網(wǎng)頁使用的是https協(xié)議,在internet中可以使用多種協(xié)議(http,https,ftp等)
域名:一個(gè)URL中也可以使用IP作為域名,這個(gè)URL中域名為www.baidu.com
端口:跟在域名后,以“:”作為分隔符。如果省略端口,那么將采用默認(rèn)端口。
虛擬目錄:虛擬目錄不是必須部分。是從域名后第一個(gè)“/”開始到最后一個(gè)“/”為止。
文件名:從域名后的最后一個(gè)“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個(gè)“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個(gè)“/”開始到結(jié)束,都是文件名部分。文件名部分也不是一個(gè)URL必須的部分,如果省略該部分,則使用默認(rèn)的文件名。
錨:從“#”開始到最后都是錨,錨也不是一個(gè)URL必須的部分。
參數(shù):從“?”開始到“#”為止中間為參數(shù),參數(shù)可以允許有多個(gè)參數(shù),中間以“&”作為分隔符。
請(qǐng)求方法:
GET 請(qǐng)求指定的頁面信息,并返回實(shí)體主體。 HEAD 類似于get請(qǐng)求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報(bào)頭 POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。 PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。 DELETE 請(qǐng)求服務(wù)器刪除指定的頁面。 CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。 OPTIONS 允許客戶端查看服務(wù)器的性能。 TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測試或診斷。

瀏覽器通過file://訪問文件和http://訪問文件的區(qū)別
file協(xié)議用于訪問本地計(jì)算機(jī)中的文件,好比通過資源管理器中打開文件一樣,需要主要的是它是針對(duì)本地的,即file協(xié)議是訪問你本機(jī)的文件資源。
http訪問本地的html文件,相當(dāng)于將本機(jī)作為了一臺(tái)http服務(wù)器,然后通過localhost訪問的是你自己電腦上的本地服務(wù)器,再通過http服務(wù)器去訪問你本機(jī)的文件資源。
再簡單點(diǎn)就是file只是簡單請(qǐng)求了本地文件,將其作為一個(gè)服務(wù)器未解析的靜態(tài)文件打開。而http是在本地搭建了一個(gè)服務(wù)器再通過服務(wù)器去動(dòng)態(tài)解析拿到文件。
其他區(qū)別:
file協(xié)議只能在本地訪問
本地搭建http服務(wù)器開放端口后他人也可以通過http訪問到你電腦中的文件,但是file協(xié)議做不到
file協(xié)議對(duì)應(yīng)有一個(gè)類似http的遠(yuǎn)程訪問,就是ftp協(xié)議,即文件傳輸協(xié)議。
file協(xié)議無法實(shí)現(xiàn)跨域
問題解決
開始通過file協(xié)議直接訪問index.html,在index.html中靜態(tài)引入index.js,在index.js中import test.js。在import的過程中需要http服務(wù)器去解析es6語法并添加header頭信息去跨域引入test.js,但是file協(xié)議相當(dāng)于通過資源管理器靜態(tài)訪問index.html,中間的過程沒有http服務(wù)器參與解析,所以無法識(shí)別es6的import語法。
|