前端知識:網(wǎng)絡(luò)相關(guān)

OSI 七層模型與 TCP/IP 五層模型

  • OSI 七層模型:物理層狸驳、數(shù)據(jù)鏈路層预明、網(wǎng)絡(luò)層、傳輸層耙箍、會話層撰糠、展示層、應(yīng)用層
  • TCP/IP 五層模型:物理層辩昆、數(shù)據(jù)鏈路層阅酪、網(wǎng)絡(luò)層、傳輸層汁针、應(yīng)用層

HTTP/ HTTPS 協(xié)議

HTTP 0.9

  • 只有GET命令
  • 響應(yīng)后就馬上關(guān)閉連接

HTTP 1.0

  • 增加了HEAD术辐、POST方法
  • 增加了HTTP Headers和響應(yīng)狀態(tài)碼

HTTP 1.1(普遍使用)

  • 持久連接(Keep-Alive),通道復(fù)用
  • 增加了PUT施无、DELETE辉词,OPTIONS 等方法
  • 新增斷點續(xù)傳,身份認(rèn)證猾骡,狀態(tài)管理瑞躺,緩存等特性

HTTP 2.0

  • 數(shù)據(jù)以二進制分幀進行傳輸
  • 頭信息壓縮
  • 服務(wù)端推送

HTTPS

  • 使用SSL加密傳輸?shù)?code>HTTP安全版本

URL 和 URI 的區(qū)別

  • URI = URL + URN
  • URI:統(tǒng)一資源標(biāo)識符,用來唯一標(biāo)識互聯(lián)網(wǎng)上的信息資源兴想,就像身份證號可以獨一無二的標(biāo)識出來
  • URL:統(tǒng)一資源定位符幢哨,通過資源位置來標(biāo)識資源,就像是身份證上的地址

常見狀態(tài)碼

  • 1xx:請求正在處理
  • 200 OK:請求成功
  • 201 Created:已創(chuàng)建襟企,POSTPUT請求成功的響應(yīng)
  • 202 Accepted:已接受嘱么,但未響應(yīng)
  • 204 No Content:請求成功,但無內(nèi)容
  • 206 Partial Content:請求部分內(nèi)容顽悼,如斷點續(xù)傳
  • 301 Moved Permanently:永久性重定向曼振,比如請求路徑忘記添加最后的斜杠
  • 302 Found:臨時性重定向
  • 304 Not Modified:資源未修改,使用緩存
  • 400 Bad Request:請求語法錯誤
  • 401 Unauthorized:要求身份認(rèn)證
  • 403 Forbidden:請求資源被拒絕
  • 404 Not Found:資源不存在
  • 405 Method Not Allowed:請求的方法不支持
  • 500 Internal Server Error:服務(wù)器錯誤
  • 502 Bad Gateway:代理服務(wù)器錯誤
  • 504 Gateway Timeout:請求超時

GET 和 POST

GET:語義上是指請求獲取指定的資源蔚龙,使用URL進行傳參冰评,數(shù)據(jù)長度有限制,資源可以被緩存
POST:語義上是指對請求資源做出處理木羹,請求數(shù)據(jù)放在body中甲雅,數(shù)據(jù)長度無限制,相對GET更安全坑填,支持更多的編碼類型抛人,不能被緩存

本質(zhì)區(qū)別:GET是冪等的,而POST不是冪等的脐瑰。就是說對于相同的請求妖枚,GET請求返回相同的結(jié)果,而POST會有副作用苍在。所以不應(yīng)該使用GET請求做增刪改操作绝页,也不應(yīng)該使用POST請求做查詢操作

常用請求/相應(yīng)頭

通用頭

  • Cache-Control:控制緩存行為
    • no-cache:向服務(wù)器驗證后,再決定緩存獲取或還是請求
    • no-store:不進行緩存寂恬,直接從服務(wù)器獲取
    • max-age:設(shè)置緩存最大有效時間续誉,單位是秒
  • Connection:連接管理
    • keep-alive:持久連接
    • close:每次請求都會重新創(chuàng)建TCP連接
  • Date:服務(wù)端發(fā)送資源時的時間
  • Via:代理服務(wù)器相關(guān)信息

請求頭

  • Accept:可接受的響應(yīng)內(nèi)容類型
  • Accept-Language:可接受的響應(yīng)內(nèi)容語言列表
  • Cookie:客戶端存儲的Cookie字符串
  • Host:請求資源所在的服務(wù)器
  • If-Modified-Since:上次訪問時的更改時間,資源未修改的情況下返回304 Not Modified
  • If-None-Match:此次訪問使用的E-Tag
  • Range:請求實體的字節(jié)范圍初肉,用于斷點續(xù)傳
  • Referer:請求資源的原始URI
  • User-Agent:客戶端相關(guān)信息

響應(yīng)頭

  • Content-Type:資源資源的內(nèi)容類型
  • Etag:資源標(biāo)識信息酷鸦,標(biāo)識資源是否更新,用于緩存驗證
  • Last-Modified:資源最后修改日期
  • Server:服務(wù)器軟件信息
  • Set-Cookie:設(shè)置Cookie
  • Access-Control-Allow-Origin:跨域設(shè)置

TCP三次握手和四次揮手

三次握手

  • 客戶端發(fā)送SYN標(biāo)志牙咏,等待服務(wù)器確認(rèn)
  • 服務(wù)器確認(rèn)SYN標(biāo)志后井佑,發(fā)送SYN+ACK包給客戶端
  • 客戶端接收到SYN+ACK包后,發(fā)送ACK包眠寿,雙方建立連接

四次揮手

  • 客戶端 -- FIN --> 服務(wù)端躬翁,關(guān)閉數(shù)據(jù)傳送,客戶端進入FIN_WAIT_1狀態(tài)
  • 服務(wù)端 -- ACK -> 客戶端盯拱,服務(wù)端進入CLOSE_WAIT狀態(tài)
  • 服務(wù)端 -- ACK + FIN --> 客戶端盒发,服務(wù)端進入LAST_ACK狀態(tài)
  • 客戶端 -- ACK -> 服務(wù)端,服務(wù)端進入CLOSED狀態(tài)

跨域

同源策略限制:如果兩個URL的協(xié)議狡逢,域名和端口相同則表示它們同源宁舰,否則被當(dāng)做跨域

跨域解決方法:

  • JSONP:利用<script>標(biāo)簽不受跨域限制,缺點是只支持GET請求
  • CORS:設(shè)置Access-Control-Allow-Origin頭允許跨域

HTTP 緩存策略

強緩存

根據(jù)Cache-ControlExpires頭來判斷是否強緩存奢浑,如果命中強緩存蛮艰,則直接從緩存讀取資源,不會發(fā)請求到服務(wù)器雀彼,在Chrome瀏覽器下如下所示:

協(xié)商緩存

通過Last-ModifiedEtag來驗證資源是否命中協(xié)商緩存壤蚜,如果命中則服務(wù)器會返回這個請求即寡,但不會返回這個資源的數(shù)據(jù),依然是從緩存中讀取數(shù)據(jù)袜刷,在Chrome瀏覽器下如下所示:

緩存策略

安全

  • XSS:跨站腳本攻擊聪富,瀏覽器內(nèi)運行非法的HTML標(biāo)簽或JS進行的一種攻擊
    • Cookie設(shè)置為HttpOnly
    • 轉(zhuǎn)義頁面上的輸入內(nèi)容和輸出內(nèi)容
  • CSRF:跨域請求偽造,攻擊者盜用了你的身份著蟹,以你的名義發(fā)送惡意請求

RESTful

URL 設(shè)計

  • 動詞(HTTP Methods) + 賓語墩蔓,注意方法要語義明確
  • 賓語必須是名詞,如/articles萧豆,而不是/getArticles
  • 復(fù)數(shù)URL奸披,如GET /articles/2,而不是GET /article/2
  • 避免多級URL涮雷,除了第一級其余級別都用查詢字符串阵面,如GET /authors/12?categories=2,而不是GET /authors/12/categories/2

狀態(tài)碼

按照不同的場景份殿,返回對應(yīng)合適的狀態(tài)碼

服務(wù)器響應(yīng)

  • API返回的數(shù)據(jù)格式應(yīng)該是一個JSON對象膜钓,而不是純文本,需要將服務(wù)器的響應(yīng)頭Content-Type設(shè)置為application/json
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卿嘲,一起剝皮案震驚了整個濱河市颂斜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拾枣,老刑警劉巖沃疮,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梅肤,居然都是意外死亡司蔬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門姨蝴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俊啼,“玉大人,你說我怎么就攤上這事左医∈谂粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵浮梢,是天一觀的道長跛十。 經(jīng)常有香客問我,道長秕硝,這世上最難降的妖魔是什么芥映? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上奈偏,老公的妹妹穿的比我還像新娘坞嘀。我一直安慰自己,他們只是感情好霎苗,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布姆吭。 她就那樣靜靜地躺著榛做,像睡著了一般唁盏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上检眯,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天厘擂,我揣著相機與錄音,去河邊找鬼锰瘸。 笑死刽严,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的避凝。 我是一名探鬼主播舞萄,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼管削!你這毒婦竟也來了倒脓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤含思,失蹤者是張志新(化名)和其女友劉穎崎弃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體含潘,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡饲做,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遏弱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盆均。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖漱逸,靈堂內(nèi)的尸體忽然破棺而出泪姨,到底是詐尸還是另有隱情,我是刑警寧澤虹脯,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布驴娃,位于F島的核電站,受9級特大地震影響循集,放射性物質(zhì)發(fā)生泄漏唇敞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疆柔。 院中可真熱鬧咒精,春花似錦、人聲如沸旷档。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞋屈。三九已至范咨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厂庇,已是汗流浹背渠啊。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留权旷,地道東北人替蛉。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像拄氯,于是被迫代替她去往敵國和親躲查。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355