關於http 自己的學習筆記

2021-09-24 07:58:02 字數 2171 閱讀 2268

http的基礎請求和響應架構非常簡單且易於使用,但是在實踐中會伴隨著各種複雜問題:

1,客戶端和伺服器交換cookie

2,伺服器重定向瀏覽器到其他伺服器

3,快取某些資源而剩下的不快取

4,某些客戶端通過**伺服器傳送所有的請求等

xml不是協議級的http api 而是瀏覽器級的api

瀏覽器需要考慮cookie,重定向,快取和**,但是**只需要擔心請求和響應

一,指定請求

request.open("get","data.csv")

第乙個引數不區分大小寫,但是通常大家使用大寫字母來匹配http協議

get、post方法是得到廣泛支援的

post方法常用於html表單,在請求主體中包含額外的資料(表單資料)且這些資料通常儲存到伺服器上的資料庫中。相同url的重複post請求可能從伺服器得到得響應可能不同,同同時不應該快取使用這個方法的請求。

如果有請求頭的話,post請求需要設定request.setrequestheader("content-type","text/plain")

不能自己指定content-length,date,referer,user-agent頭,xmlhttprequest將自動新增這些頭而防止偽造他們

如果請求乙個受密碼保護的url,把使用者名稱和密碼作為第4個和第5個引數傳遞給open(),xmlhttprequest會設定合適的頭

請求主體:get請求絕對沒有請求主體,post請求有,同時應該設定setrequestheader()指定的content-type頭

順序問題:呼叫xmlhttprequest方法的順序必須必須匹配http請求的架構,否則將丟擲異常

二,指定主體

1.表單編碼的請求

2.json.stringfy()編碼請求主體

3.xml編碼的請求

4.上傳檔案

5.multipart/form-data多請求主體

三,http進度事件

呼叫send時——觸發loadstart()事件

正在載入——觸發progress事件

載入完成——觸發load()事件

乙個請求完成不一定是成功的請求,load事件應該檢查xmlhttprequest物件的status狀態碼

請求無法完成對應3種情況:1,請求超時——timeout事件

2,請求中止——abort事件

3,太多重定向等網路錯誤阻止請求完成——error事件

對於任何具體請求,瀏覽器只會處理load/abort/timeout/error中的乙個

一旦這些事件中的乙個被觸發後瀏覽器將觸發loadend事件

上傳進度事件

xhr2給出用於監控http請求上傳的事件,xmlhttprequest物件有upload屬性,upload屬性值是乙個物件,它定義了addeventlistener()方法和整個progress事件集合,比如onprogress和onload

中止請求和超時

可以通過呼叫xmlhttprequest物件的abort()方法來取消正在進行的http請求,呼叫abor()方法在這個物件上觸發abort事件

呼叫abort的主要原因是:完成取消或者超時請求消耗的時間太長或者響應變得無關時。

假設使用xmlhttprequest為文字輸入域請求自動完成推薦,如果使用者在伺服器的建議達到之前輸入了新字元,這時等待請求不再有趣,應該中止

跨域http請求

同源策略不允許xmlhttprequest進行跨域請求

xhr2允許在http響應中傳送合適的cors允許跨域訪問**,那麼同源策略不放寬就會正常工作

給xmlhttprequest的open()方法傳入使用者名稱和密碼,他們絕對不會通過跨域請求傳送,跨域請求通常也不會包含其他任何的使用者證書:cookie和http身份驗證令牌(token)通常不會作為請求的內容部分傳送且任何作為跨域響應來接受的cookie都會被丟棄

如果需要,必須設定xmlhttprequest的withcredentials為true

借助script標籤傳送http請求:jsonp

好處:1,不受同源策略的影響

2,包含json編碼資料的響應體會自動解碼

指令碼和安全性:使用該技術意味著必須web頁面可以執行遠端伺服器傳送過來的任何js**,意味著對於不可信的伺服器,不能採取該技術

關於Http協議學習筆記

主要特點 簡單快速 uii 靈活,無連線,無狀態 保溫組成部分 請求報文 請求頭 key,value值,空行 請求體 資料 響應報文 響應頭key,value值 空行 響應體 資料 方法 get 獲取資源 post 傳輸資源 put 更新資源 delete 刪除資源 head 獲得報文首部 post...

HTTP學習筆記 HTTP報文

如果說http是網際網路的信使,那麼http報文就是運送的包裹。所有的http程式都是通過互相傳送報文來完成工作的。本文將介紹http報文的流動方式,報文的組成部分,請求和響應報文之間的區別等。http報文是在http應用程式之間傳送的資料塊,這些資料塊以文字形式存在,以描述了報文的內容及含義的元資...

HTTP學習筆記 HTTP協議

tcp ip協議按層次分為四層 應用層,傳輸層,網路層,資料鏈路層。該層決定了向使用者提 用服務時通訊的活動。如ftp和dns服務等。傳輸層有兩個性質不同的協議 tcp和udp協議。網路層的作用就是計算機之間通過網路裝置進行傳輸時,選擇一條傳輸路線。用來處理連線網路的硬體部分,硬體上的範疇均在該層的...