国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

瀏覽器網(wǎng)絡(luò)請(qǐng)求——HTTP詳解

這篇具有很好參考價(jià)值的文章主要介紹了瀏覽器網(wǎng)絡(luò)請(qǐng)求——HTTP詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


HTTP 是什么

HTTP(Hyper Text Transfer Protocol): 超文本傳輸協(xié)議,是用層協(xié)議,用于從萬維網(wǎng)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。

HTTP 發(fā)展歷程

截至目前,http 經(jīng)歷了原始版本、http1.0、 http1.1、 http2.0 幾個(gè)版本,新版本每次出現(xiàn)都針對(duì)上一個(gè)版本的不足進(jìn)行加強(qiáng)

HTTP 1.0

1.0 版本有個(gè)很大的缺點(diǎn):TCP連接不可復(fù)用,每進(jìn)行一次 HTTP 通信,都需要進(jìn)行一次TCP 連接、HTTP 通信、斷開 TCP 連接流程,如下圖,兩次 HTTP 通信就要進(jìn)行兩個(gè)完整的流程

瀏覽器網(wǎng)絡(luò)請(qǐng)求——HTTP詳解

HTTP 1.1

為了解決1.0版本的TCP連接不可復(fù)用問題,在1.1版本中,提出了 長連接機(jī)制, 在一個(gè) TCP 連接里可以進(jìn)行多次 HTTP 通信,如下圖。

瀏覽器網(wǎng)絡(luò)請(qǐng)求——HTTP詳解

但是1.1 版本和 1.0 都有個(gè)很大的問題:隊(duì)頭阻塞,由于服務(wù)的響應(yīng)是串行的,前一個(gè)請(qǐng)求若未響應(yīng),會(huì)阻塞后一個(gè)響應(yīng)的返回。

HTTP 2.0

HTTP2.0 對(duì)性能做出了極大的改進(jìn)主要包括:二進(jìn)制分幀、頭部壓縮、服務(wù)端推送、多路復(fù)用

  • 二進(jìn)制分幀

在 HTTP1.x 中,數(shù)據(jù)以文本的格式進(jìn)行傳輸,解析起來比較低效。HTTP2.0 在傳輸消息時(shí),首先會(huì)將消息劃分為更小的消息和幀,然后再對(duì)其采取二進(jìn)制格式的編碼,確保高效的解析。

  • 頭部壓縮

HTTP2.0 中,客戶端和服務(wù)器分別會(huì)維護(hù)一份相同的靜態(tài)字典,這個(gè)字典用來存儲(chǔ)常見的頭部名稱,以及常見的頭部名稱和值的組合。同時(shí)還會(huì)維護(hù)一份相同的動(dòng)態(tài)字典,這個(gè)字典可以實(shí)時(shí)被更新。第一次相互通信過后,后面的請(qǐng)求只需要發(fā)送與前面請(qǐng)求之間頭部不同的地方,其它的頭部信息都可以從字典中獲取。大大節(jié)省了網(wǎng)絡(luò)開銷。

  • 服務(wù)端推送

在 HTTP1.x 中,如果用戶請(qǐng)求了資源 A,結(jié)果發(fā)現(xiàn)自己如果要用資源 A,那么必須依賴資源 B,這時(shí)他不得不再消耗一個(gè)請(qǐng)求。而 HTTP2.0 中,允許服務(wù)器主動(dòng)向客戶端 push 資源。也就是說當(dāng)服務(wù)器發(fā)現(xiàn)客戶端請(qǐng)求了資源 A,卻忘了請(qǐng)求資源 A 依賴的資源 B 時(shí),它可以主動(dòng)將資源 B 順手推送給客戶端。

  • 多路復(fù)用

在 HTTP 2.0 中,一次連接建立后,只要這個(gè)連接還在,那么客戶端就可以在一個(gè)鏈接中批量發(fā)起多個(gè)請(qǐng)求。同時(shí),請(qǐng)求與請(qǐng)求間屬于并行,不會(huì)互相阻塞。由此,徹底規(guī)避了隊(duì)頭阻塞問題。

常用方法

HTTP 協(xié)議常用的請(qǐng)求方法有 GET、POST、PUT、DELETE。

  • GET :僅用作數(shù)據(jù)的讀取,請(qǐng)求參數(shù)以query的形式拼接到url
  • POST :創(chuàng)建新資源或修改現(xiàn)有資源,請(qǐng)求參數(shù)以body的形式傳遞
  • PUT :PUT 在能力上和 POST 類似,區(qū)別在于 PUT 的 URI 指向是具體的某個(gè)資源,而不能指向資源集合。
  • DELETE:用于刪除指定的資源

頭部信息 (Headers)

http 在發(fā)出請(qǐng)求或者響應(yīng)時(shí),都會(huì)攜帶有header,其中存放了一些必要的信息,下面列舉常用的頭部信息。緩存相關(guān)的頭將在后續(xù)文章介紹。 更多頭部信息可以參考:httq請(qǐng)求頭/響應(yīng)頭

請(qǐng)求頭(request Headers)

  • Accept: 瀏覽器可接受的數(shù)據(jù)格式
  • Accept-encoding: 瀏覽器可接受的壓縮算法,如gzip(服務(wù)器壓縮,客戶端解壓,讓傳輸?shù)馁Y源變小,速度更快)
  • Accept-Language: 瀏覽器可接收的語言,如zh-CN
  • Connect:keep-alive 一次TCP連接重復(fù)使用
  • Cookie同域每次請(qǐng)求資源都會(huì)把cookie帶上
  • Host請(qǐng)求的域名
  • User-agent:簡稱UA,瀏覽器信息,標(biāo)識(shí)是什么瀏覽器,是什么系統(tǒng),供給服務(wù)器分析
  • Content-type:發(fā)送數(shù)據(jù)的格式(多存在于post請(qǐng)求中),如一般json數(shù)據(jù)為application/json ,圖片或文件為multipart/form-data

響應(yīng)頭(response Headers)

  • Content-type:返回?cái)?shù)據(jù)的格式,如application/json(json),text/html(html),text/css(css)、text/javascript(javascript)、image/png,

  • Content-length:返回?cái)?shù)據(jù)的大小,多少字節(jié)

  • Content-Encoding返回?cái)?shù)據(jù)的壓縮算法,如gzip

  • Set-Cookie服務(wù)端需要通過該字段來修改瀏覽器中的cookie

狀態(tài)碼

1xx:成功接收了請(qǐng)求,但是處理過程還沒結(jié)束,需要客戶端再拋出一個(gè)請(qǐng)求才能完成整個(gè)過程。

2xx:表示成功接收請(qǐng)求、并且已經(jīng)處理完畢。

  • 200 OK,標(biāo)識(shí)客戶端的請(qǐng)求已經(jīng)被服務(wù)器正確處理

3xx:表示服務(wù)器雖然也處理了你的請(qǐng)求,但客戶端還需要進(jìn)一步的工作,才可以完成請(qǐng)求。

  • 301:永久性重定向,表示資源已被分配了新的 URL

  • 302:臨時(shí)性重定向,表示資源臨時(shí)被分配了新的 URL

  • 304,表示服務(wù)器校驗(yàn)后發(fā)現(xiàn)資源沒有改變,提醒客戶端直接走緩存來取資源

4xx:客戶端錯(cuò)誤,意味著請(qǐng)求出錯(cuò)了。

  • 400:請(qǐng)求報(bào)文存在語法錯(cuò)誤

  • 403:對(duì)請(qǐng)求資源的訪問被服務(wù)器拒絕(多半是沒權(quán)限)

  • 404,資源不存在,可能是你的路徑不對(duì),也可能是這個(gè)資源在服務(wù)端已經(jīng)被下掉了

5xx:服務(wù)器錯(cuò)誤,意味著服務(wù)器內(nèi)部的程序處理有問題。

  • 500:服務(wù)器在接受請(qǐng)求后進(jìn)行處理的過程中,發(fā)生了內(nèi)部錯(cuò)誤

  • 502:網(wǎng)關(guān)錯(cuò)誤

  • 504:網(wǎng)關(guān)超時(shí)

HTTP無狀態(tài)理解:cookie與session

HTTP無狀態(tài)協(xié)議,是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,簡單的說:前一刻發(fā)出的 A 請(qǐng)求,與下一刻發(fā)出的 B 請(qǐng)求, B 是完全感知不到 A 請(qǐng)求過的,兩個(gè)請(qǐng)求間毫無關(guān)系。

如果想維持狀態(tài)信息,需要使用cookiesession

  • cooike

客戶端第一次向服務(wù)器端發(fā)送請(qǐng)求時(shí)是沒有cookie的,請(qǐng)求后服務(wù)器端會(huì)在cookie中存入一些數(shù)據(jù)。下次在訪問相同的服務(wù)器就會(huì)帶上cookie中的數(shù)據(jù)。

  • session

實(shí)際上是一個(gè)對(duì)象,存儲(chǔ)在服務(wù)器端的內(nèi)存中,在session對(duì)象中也可以存儲(chǔ)多條數(shù)據(jù),每一條數(shù)據(jù)都有一個(gè)sessionid作為唯一標(biāo)識(shí)。

  • 以登錄邏輯為例

1、 客戶輸入賬號(hào)密碼進(jìn)行登錄,服務(wù)器端進(jìn)行驗(yàn)證,驗(yàn)證成功則生成sessionId,并且在session對(duì)象中存儲(chǔ)當(dāng)前用戶信息。

2、 服務(wù)器端將sessionId寫入客戶端cookie中,當(dāng)客戶端下次訪問服務(wù)器端時(shí)cookie會(huì)被自動(dòng)發(fā)送給服務(wù)器端。

3、 服務(wù)器端在 cookie 中拿到 sessionId 然后在服務(wù)器端的 session 對(duì)象中查找 sessionId 進(jìn)行驗(yàn)證,驗(yàn)證成功說明用戶是登陸狀態(tài),則可以為其響應(yīng)只有在登陸狀態(tài)才能響應(yīng)的數(shù)據(jù)。

總結(jié)

  • HTTP 是什么

  • HTTP 發(fā)展歷程

  • 常用方法

  • 頭部信息 (Headers)

  • 狀態(tài)碼

  • HTTP無狀態(tài)理解:cookie與session文章來源地址http://www.zghlxwxcb.cn/news/detail-465700.html

到了這里,關(guān)于瀏覽器網(wǎng)絡(luò)請(qǐng)求——HTTP詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 谷歌瀏覽器(chrome)允許跨域/允許https網(wǎng)站中發(fā)送http請(qǐng)求

    谷歌瀏覽器(chrome)允許跨域/允許https網(wǎng)站中發(fā)送http請(qǐng)求

    直接上方法了 第一步:對(duì)谷歌瀏覽器圖標(biāo)點(diǎn)擊鼠標(biāo)右鍵,打開屬性面板 第二步:在下圖位置,添加下列代碼 原來啟動(dòng)瀏覽器的地址: C:UsersxxxxxAppDataLocalGoogleChromeApplicationchrome.exe 增加的代碼(注意開頭是有個(gè)空格的,要把兩部分用空格隔開的): --args --disable-web-secu

    2024年02月02日
    瀏覽(154)
  • 谷歌瀏覽器通過network模擬HTTP中的GET/POST請(qǐng)求獲取response

    谷歌瀏覽器通過network模擬HTTP中的GET/POST請(qǐng)求獲取response

    1、F12打開network選中需要模擬的方法Copy-Copy as fetch 2、通過AI幫你進(jìn)行轉(zhuǎn)換一下調(diào)用格式? 原代碼 通過文心一言轉(zhuǎn)換(有條件的可以用ChatGPT) 問題:幫我轉(zhuǎn)換為js 轉(zhuǎn)換之后的代碼 ?3、拿到response返回結(jié)果data值 比如我這邊想獲取到toPhoneShield的值 老規(guī)矩通過文心一言提問(有條件的

    2024年01月23日
    瀏覽(20)
  • Http 響應(yīng)頭 Transfer-Encoding : chunked 導(dǎo)致 瀏覽器客戶端請(qǐng)求錯(cuò)誤問題

    Http 響應(yīng)頭 Transfer-Encoding : chunked 導(dǎo)致 瀏覽器客戶端請(qǐng)求錯(cuò)誤問題

    生產(chǎn)環(huán)境服務(wù)器規(guī)劃如下 服務(wù)器 類型 網(wǎng)絡(luò)環(huán)境 cal.com nginx 外網(wǎng) 192.168.7.15:9200 tomcat 內(nèi)網(wǎng) 192.168.7.16:9200 tomcat 內(nèi)網(wǎng) sdd.com nginx 內(nèi)網(wǎng) 192.168.7.15:9100 tomcat 內(nèi)網(wǎng) 192.168.7.16:9100 tomcat 內(nèi)網(wǎng) 192.168.7.15和192.168.7.16是做個(gè)負(fù)載均衡。目前的需求是用戶訪問外網(wǎng)的cal.com 返回 內(nèi)網(wǎng) 192.168.7.15:9

    2024年02月15日
    瀏覽(25)
  • Chrome瀏覽器設(shè)置header請(qǐng)求 響應(yīng)頭 使用 Chrome ModHeader插件,添加/修改/刪除HTTP請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭

    Chrome瀏覽器設(shè)置header請(qǐng)求 響應(yīng)頭 使用 Chrome ModHeader插件,添加/修改/刪除HTTP請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭

    ModHeader插件支持添加/修改/刪除請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭,并可以啟用基于URL /資源類型的標(biāo)題修改。 添加擴(kuò)展程序,并且開啟使用 在瀏覽器右上角的擴(kuò)展程序中,確認(rèn)ModHeader是否已經(jīng)適用 點(diǎn)擊modHeader,開啟 在窗口的+號(hào)上,可以添加其他屬性。進(jìn)行修改,刪除,置空 修改heade

    2024年02月11日
    瀏覽(372)
  • Chrome瀏覽器中訪問http會(huì)自動(dòng)跳轉(zhuǎn)https下,導(dǎo)致請(qǐng)求和文件不能正常訪問

    Chrome瀏覽器中訪問http會(huì)自動(dòng)跳轉(zhuǎn)https下,導(dǎo)致請(qǐng)求和文件不能正常訪問

    網(wǎng)上查了很多解決方案,例如清楚緩存等等其他方法,都不能解決該問題 例如: 地址欄輸入: chrome://net-internals/#hsts 找到底部 Delete domain security policies 一欄,輸入想處理的域名,點(diǎn)擊 delete 。 搞定了,再次訪問http域名不再自動(dòng)跳轉(zhuǎn)https了。 點(diǎn)擊地址欄旁邊的鎖 打開網(wǎng)站設(shè)置

    2024年02月02日
    瀏覽(42)
  • 詳解禁止瀏覽器 http自動(dòng)跳轉(zhuǎn)成https

    在Web開發(fā)中,禁止瀏覽器在HTTP請(qǐng)求中自動(dòng)跳轉(zhuǎn)到HTTPS是通過設(shè)置HTTP響應(yīng)頭中的Strict-Transport-Security(HSTS)字段來實(shí)現(xiàn)的。HSTS是一個(gè)安全策略,它告訴瀏覽器在一定的時(shí)間內(nèi)強(qiáng)制使用HTTPS連接來加載網(wǎng)站,從而提高網(wǎng)站的安全性。 以下是通過設(shè)置HSTS頭來禁止瀏覽器在HTTP請(qǐng)求中

    2024年02月04日
    瀏覽(56)
  • 瀏覽器工作原理與實(shí)踐--HTTP/2:如何提升網(wǎng)絡(luò)速度

    瀏覽器工作原理與實(shí)踐--HTTP/2:如何提升網(wǎng)絡(luò)速度

    上一篇文章我們聊了HTTP/1.1的發(fā)展史,雖然HTTP/1.1已經(jīng)做了大量的優(yōu)化,但是依然存在很多性能瓶頸,依然不能滿足我們?nèi)找孀兓男滦枨螅跃陀辛宋覀兘裉煲牡腍TTP/2。 本文我們依然從需求的層面來談,先分析HTTP/1.1存在哪些問題,然后再來分析HTTP/2是如何解決這些問題

    2024年04月16日
    瀏覽(23)
  • js 在瀏覽器窗口關(guān)閉后還可以不中斷網(wǎng)絡(luò)請(qǐng)求

    js 在瀏覽器窗口關(guān)閉后還可以不中斷網(wǎng)絡(luò)請(qǐng)求

    有個(gè)需求,我們需要在用戶發(fā)送數(shù)據(jù)過程中,如果用戶關(guān)閉了網(wǎng)頁( 包括整個(gè)瀏覽器關(guān)閉 ),不要中斷數(shù)據(jù)傳遞 目前XMLHttpRequest對(duì)象是不支持的 http服務(wù)器 為了測(cè)試效果我們用nodejs寫了個(gè)http服務(wù)器代碼 文件名為httpServer.js如下,執(zhí)行 node httpServer.js 就可以跑起來,支持get,pos

    2024年02月15日
    瀏覽(21)
  • 什么是瀏覽器緩存(browser caching)?如何使用HTTP頭來控制緩存?

    什么是瀏覽器緩存(browser caching)?如何使用HTTP頭來控制緩存?

    前端入門之旅:探索Web開發(fā)的奇妙世界 歡迎來到前端入門之旅!感興趣的可以訂閱本專欄哦!這個(gè)專欄是為那些對(duì)Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一個(gè)系統(tǒng)而又親切的學(xué)習(xí)平臺(tái)。在這個(gè)

    2024年02月09日
    瀏覽(34)
  • JS-27 前端數(shù)據(jù)請(qǐng)求方式;HTTP協(xié)議的解析;JavaScript XHR、Fetch的數(shù)據(jù)請(qǐng)求與響應(yīng)函數(shù);前端文件上傳XHR、Fetch;安裝瀏覽器插件FeHelper

    JS-27 前端數(shù)據(jù)請(qǐng)求方式;HTTP協(xié)議的解析;JavaScript XHR、Fetch的數(shù)據(jù)請(qǐng)求與響應(yīng)函數(shù);前端文件上傳XHR、Fetch;安裝瀏覽器插件FeHelper

    早期的網(wǎng)頁都是通過后端渲染來完成的,即服務(wù)器端渲染(SSR,server side render): 客戶端發(fā)出請(qǐng)求 - 服務(wù)端接收請(qǐng)求并返回相應(yīng)HTML文檔 - 頁面刷新,客戶端加載新的HTML文檔; 服務(wù)器端渲染的缺點(diǎn): 當(dāng)用戶點(diǎn)擊頁面中的某個(gè)按鈕向服務(wù)器發(fā)送請(qǐng)求時(shí),頁面本質(zhì)上只是一些數(shù)

    2024年02月16日
    瀏覽(42)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包