2.web前端基礎(chǔ)儲(chǔ)備之—http

一、典型的 HTTP Client-Server協(xié)議會(huì)話階段。

  1. 客戶端建立一條 TCP 連接(如果傳輸層不是 TCP,也可以是其他適合的連接)。
  2. 客戶端發(fā)送請(qǐng)求并等待應(yīng)答。
  3. 服務(wù)器處理請(qǐng)求并送回應(yīng)答,回應(yīng)包括一個(gè)狀態(tài)碼和對(duì)應(yīng)的數(shù)據(jù)。
    ps:從 HTTP/1.1 開(kāi)始,連接在完成第三階段后不再關(guān)閉,客戶端可以再次發(fā)起新的請(qǐng)求。這意味著第二步和第三步可以連續(xù)進(jìn)行數(shù)次。

二、常見(jiàn)http headers。

1.request headers


request
ps:java后臺(tái)可以用http servletRequest 獲取headers信息。

2.response headers


response
圖片來(lái)源于網(wǎng)絡(luò)

三、http 狀態(tài)碼(response code)。

分類:

code 描述
1** 信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作
2** 成功,操作被成功接收并處理
3** 重定向,需要進(jìn)一步的操作以完成請(qǐng)求
4** 客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求
5** 服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤

常見(jiàn)狀態(tài)碼描述:

code 英文名稱 描述
100 Continue 繼續(xù)。客戶端應(yīng)繼續(xù)其請(qǐng)求
101 Switching Protocol 該代碼是響應(yīng)客戶端的 Upgrade標(biāo)頭發(fā)送的,并且指示服務(wù)器也正在切換的協(xié)議。例如,切換到HTTP的新版本協(xié)議
200 ok 請(qǐng)求成功
201 Created 該請(qǐng)求已成功,并因此創(chuàng)建了一個(gè)新的資源。它通常是post或put請(qǐng)求后的響應(yīng)
300 Multiple Choice 被請(qǐng)求的資源有一系列可供選擇的回饋信息
301 Moved Permanently 被請(qǐng)求的資源已永久移動(dòng)到新位置,并且將來(lái)任何對(duì)此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個(gè) URI 之一。
400 Bad Request 1、語(yǔ)義有誤,當(dāng)前請(qǐng)求無(wú)法被服務(wù)器理解。除非進(jìn)行修改,否則客戶端不應(yīng)該重復(fù)提交這個(gè)請(qǐng)求。2、請(qǐng)求參數(shù)有誤。
401 Unauthorized 當(dāng)前請(qǐng)求需要用戶驗(yàn)證。
403 Forbidden 服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行它。如:請(qǐng)求接口不存在、跨域等可能會(huì)出現(xiàn)此code
404 Not Found 請(qǐng)求失敗,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)。
500 Internal Server Error 服務(wù)器內(nèi)部錯(cuò)誤,無(wú)法完成請(qǐng)求
502 Bad Gateway 它表示作為網(wǎng)關(guān)或代理角色的服務(wù)器,從上游服務(wù)器(如tomcat、php-fpm)中接收到的響應(yīng)是無(wú)效的。

四、內(nèi)容安全策略( CSP )

主要威脅:跨站腳本攻擊、數(shù)據(jù)包嗅探攻擊。
防范:配置csp

五、HTTP cookies

首先我們要了解http是無(wú)狀態(tài)可會(huì)話的,而Cookie 使基于無(wú)狀態(tài)的HTTP協(xié)議記錄穩(wěn)定的狀態(tài)信息成為了可能。當(dāng)然Cookie也可以用于客戶端信息的存儲(chǔ),我們可以設(shè)置cookies的有效期來(lái)控制它的生命周期(這一有效期只與客戶端相關(guān))。

  • ps
    cookies安全:
    通過(guò)設(shè)置Secure(確保是HTTPS )屬性和HttpOnly(使jsapi無(wú)法訪問(wèn)) 屬性可以確保cookies相對(duì)安全。
    cookies作用域:
    可以通過(guò)Domain 和 Path 標(biāo)識(shí)定義Cookie的作用域。

六、跨域資源共享(CORS)。

CORS是為了讓瀏覽器可以訪問(wèn)非同源的資源,所謂同源即:協(xié)議相同、域名(主機(jī))相同、端口相同。
有哪些實(shí)現(xiàn)跨域的方案?

  • 使用JSONP。
    JSONP不使用XMLHttpRequest 來(lái)請(qǐng)求json數(shù)據(jù),而是通過(guò)使用<script>標(biāo)簽來(lái)請(qǐng)求外部腳本,來(lái)實(shí)現(xiàn)跨域請(qǐng)求json數(shù)據(jù)。
    缺點(diǎn):高耦合、不安全、只支持GET。

  • CORS。
    通過(guò)對(duì)http請(qǐng)求的首部字段判斷來(lái)實(shí)現(xiàn)訪問(wèn)控制。另外在瀏覽器端,發(fā)起實(shí)際請(qǐng)求前會(huì)發(fā)起一條OPTIONS預(yù)請(qǐng)求(并非所有請(qǐng)求都會(huì)OPTIONS),服務(wù)器通過(guò)對(duì)預(yù)請(qǐng)求的判斷(比如Origin)來(lái)決定其實(shí)際請(qǐng)求是否被允許。
    ps:我們可以通過(guò)預(yù)請(qǐng)求的Access-Control-Allow-Methods返回字段來(lái)判斷可以使用的http請(qǐng)求方式,還可以通過(guò)Access-Control-Allow-Headers字段來(lái)得到允許攜帶的首部字段。

  • 代理。
    同源策略是瀏覽器的規(guī)則,那我們繞開(kāi)就可以實(shí)現(xiàn)跨域。
    例:瀏覽器要請(qǐng)求在非同源服務(wù)器的數(shù)據(jù),我們先在localhost上搭建一個(gè)請(qǐng)求外網(wǎng)服務(wù)器的代理服務(wù)器(可以通過(guò)node、nginx...實(shí)現(xiàn))做數(shù)據(jù)轉(zhuǎn)發(fā),然后瀏覽器直接請(qǐng)求localhost代理服務(wù)器,即實(shí)現(xiàn)了跨域。

希望對(duì)學(xué)習(xí)的小伙伴有幫助。謝點(diǎn)贊~~轉(zhuǎn)請(qǐng)注明連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容