日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

浏览器接收响应数据过大_DOM总结:数据通信(HTTP协议和Ajax)

發布時間:2024/8/1 HTML 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浏览器接收响应数据过大_DOM总结:数据通信(HTTP协议和Ajax) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTTP協議:

一個完整的HTTP請求的過程:1、瀏覽器會向服務器端發送給一個包含命令和URL的HTTP請求報文;2、當服務器端接收到這個請求報文之后,會進行一系列的計算,向瀏覽器返回一個包含事務結果的HTTP響應報文;3、瀏覽器接收到響應報文之后,會將報文的主體顯示在瀏覽器端上。

HTTP報文分為請求報文和響應報文。都是由三部分組成:頭行、頭部和主體。

頭行由三部分構成:方法、主機地址、HTTP的版本

頭部:許多的鍵值對構成

Accept:瀏覽器端可以接收的媒體類型

Accept-Encoding:瀏覽器端可以接收的媒體類型的編碼的方式

Accept-Language:瀏覽器端可以接收的語言類型

Cache-Control:緩存策略

Connection:keep-alive

Cookie:瀏覽器端向服務器端發送的cookie值

Host:主機

Pragma:頭域用來包含實現特定的指令,最常用的是no-cache

User-Agent:當前瀏覽器的版本

GET方法,請求體為空。

響應報文的格式:也是由三部分組成 頭行 頭部 和主體

頭行:HTTP協議版本、HTTP狀態碼、HTTP狀態碼描述

expires:緩存的有效時間,如果緩存策略設置了緩存的話,可以設置下expires,賦一個時間戳。

server:服務器端的HTTP服務器使用的是Nginx服務器。

主體:因為訪問的是一個頁面,所以返回的是一個完整的xml文件。

常見的HTTP方法:

URL構成

protocol + host(hostname + port )+ pathname + search + hash

port、pathname、search、hash都是不必須的。

HTTP版本

1991年,HTTP的原型,有很多設計缺陷 HTTP/0.9

HTTP/1.0版本很快取代了0.9,成為了第一個廣泛應用的版本。

HTTP/1.0+ 添加持久的keep-alive連接、虛擬主機支持,以及代理連接支持,稱為非官方的事實標準。

HTTP/1.1 校正了結構性缺陷,明確語義,引入重要的性能優化措施,刪除不好特性。

常見HTTP狀態碼

HTTP協議在前端開發中的應用

Asynchronous Javascript and XML

完整的Ajax通信流程

1、創建一個Ajax對象 XHR(readyState:0,status: responseText:)當XHR初始化的時候,readyState=0,另外兩個屬性的值為空。

2、調用XHR對象的open方法,readyState=1,開啟一個請求,以備發送。但是沒有向服務器端發請求。xhr.open(method,url [ , async = true]) 默認是異步請求。

調用open方法之后調用xhr.setRequestHeader(header, value),也不一定非要調用它。調用這個方法可以在請求體頭部設置頭部字段,比如把header的值設為content-type 。如果當前這個請求是表單編碼的、文件上傳

3、調用send方法,readyState=2,正式向服務器端發送請求。xhr.send([data = null])向服務器端發送請求的請求體里的數據。這個數據可以是string類型,也可以是formdata類型的。

4、當服務器端開始返回數據的時候,瀏覽器接收到這個數據,readyState=3。

5、瀏覽器端結束請求時,readyState=4,status=200,responseText=<!DOCTYPE html>

在HTTP2.0的標準里面,我們還可以監聽它的xhr.onload事件,可以代替onreadystatechange事件,當readyState=4,&&status=200的時候才會觸發。

請求參數序列化:

如果是get請求:需要把查詢參數作為字符串,跟在URL后面,

如果這個查詢參數是個對象,就需要把這個對象轉換成這樣一個字符串。

通過這個函數,我們傳入一個對象,就會返回我們需要的那個字符串。

GET請求參數序列化

請求體里為null。

POST請求參數序列化

查詢參數會作為send的參數。

同源策略:

兩個頁面擁有相同的協議(protocol)、端口(port)、主機(host),那么這兩個頁面就屬于同一個源(origin)。

如果不滿足同源策略的訪問,稱為:跨域資源訪問,W3C定義了CORS,現代瀏覽器已經實現了對CORS的支持。

CORS標準的原理:

1、瀏覽器會捕獲到A應用往S服務器發起的請求;

2、瀏覽器根據請求的情況,確定是否需要先作為一次預請求來驗證S服務器是否允許發送當前請求過去、如果需要的話,瀏覽器會發起一個option的請求到S服務器來驗證;

3、S服務器會根據瀏覽器發過來的header信息,驗證S服務器對資源的配置信息,然后返回資源的實際控制配置權限,然后瀏覽器驗證請求返回的信息,判斷是否將請求發送到S服務器,4、如果可以的話就發送實際的請求到S服務器;如果不行,則異常退出。

4、如果不需要就跳過第三步;

5、S服務器返回請求數據及資源的配置信息至瀏覽器,然后瀏覽器驗證資源的控制信息是否允許當前實際請求取到數據,

6、如果允許,則發送S服務器,返回數據給A應用。否則就異常退出。

其他跨域技術:

Frame代理

1、A應用要往S服務器取數據時,它會先用iframe請求S服務器上的代理文件,

2、S服務器返回了配置的代理文件,并載入iframe,

3、代理文件載入完成后,A應用將發送的請求通過消息、通信的方式傳遞給代理文件;

4、代理文件驗證A應用是否在預先配置的白名單中,如果在則直接發送請求至S服務器,否則異常退出;

5、服務器返回數據至代理文件,

6、代理文件通過消息機制將請求的結果返回給A應用。

frame代理優點:1、參照cors標準,2、支持各種請求方法、

缺點:需要在目標服務器放置代理文件,它由于首次發起請求需要載入代理文件,在載入代理文件之前的所有請求都會存在一定的延遲,對于低版本瀏覽器受限于消息通信機制的限制,并發量大的請求返回時可能存在較大的延遲。

JSONP

JSON with padding(填充式JSON)

利用的是script可以跨域,利用script標簽,向服務器請求一段JS代碼,然后執行這段JS代碼,實現跨域。

服務器就會返回一個叫json.js的一個文件,這個js文件里就是一段JS代碼。執行handleResponse這個函數。response就是要從服務器端拿取得數據。

Comet

Web Sockets等

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的浏览器接收响应数据过大_DOM总结:数据通信(HTTP协议和Ajax)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。