文章目錄 1. HTTP(超文本傳輸協議)請求具有以下主要特征: 1.1 請求行(Request Line): 1.2 請求頭(Request Headers): 1.3 請求正文(Request Body): 1.4 狀態碼(Status Code): 1.5 無狀態性(Statelessness): 1.6 緩存支持(Cacheability): 1.7 方法多樣性(Method Diversity): 1.8 URI定位(Uniform Resource Identifier): 2. 在JavaScript中,可以使用XMLHttpRequest對象或者fetch API來發送HTTP 請求 2.1 使用XMLHttpRequest 2.2 使用fetch API
1. HTTP(超文本傳輸協議)請求具有以下主要特征:
1.1 請求行(Request Line):
方法(Method): 指定請求的類型,如GET、POST、PUT、DELETE
等,表示對資源的操作方式。 URL(Uniform Resource Locator): 請求資源的統一資源定位符,標識了要訪問的網絡資源。 協議版本(Protocol Version): 表明使用的HTTP協議版本,如HTTP/1.1、HTTP/2
等。
1.2 請求頭(Request Headers):
包含一系列鍵值對,提供了關于請求的元信息,如客戶端信息、內容類型、接受的語言、認證信息等。 例如:Accept-Language: zh-CN,zh;q=0.9
表示客戶端優先接受中文內容。
1.3 請求正文(Request Body):
部分請求方法(如POST、PUT)可能攜帶請求正文,包含發送給服務器的數據。 正文內容根據請求頭中的Content-Type
決定格式,可以是表單數據、JSON、XML等。
1.4 狀態碼(Status Code):
雖然狀態碼是響應的一部分,但它是HTTP交互的重要特征,指示請求的處理結果。 如200 表示成功,404 表示未找到**,500**表示服務器內部錯誤等。
1.5 無狀態性(Statelessness):
HTTP 協議本身是無狀態的,意味著每個請求都是獨立的,服務器不保存關于客戶端的上下文信息。這一特性通過Cookie 和Session 等機制來實現用戶會話管理。
1.6 緩存支持(Cacheability):
HTTP支持通過特定的頭部字段(如Cache-Control, Expires
)來控制響應是否可被緩存,以提高效率。
1.7 方法多樣性(Method Diversity):
提供多種請求方法,每種方法對應不同的操作意圖,滿足不同場景下的需求。
1.8 URI定位(Uniform Resource Identifier):
使用URI定位網絡資源,使得Web上的每一個資源都可以被唯一標識和請求。
2. 在JavaScript中,可以使用XMLHttpRequest對象或者fetch API來發送HTTP 請求
2.1 使用XMLHttpRequest
var xhr = new XMLHttpRequest ( ) ;
xhr. open ( 'POST' , 'https://api.example.com/data' , true ) ;
xhr. setRequestHeader ( 'Content-Type' , 'application/json;charset=UTF-8' ) ;
xhr. onreadystatechange = function ( ) { if ( xhr. readyState === 4 && xhr. status === 200 ) { console. log ( xhr. responseText) ; }
} ;
var data = JSON . stringify ( { key : 'value' } ) ;
xhr. send ( data) ;
2.2 使用fetch API
fetch ( 'https://api.example.com/data' , { method : 'POST' , headers : { 'Content-Type' : 'application/json' } , body : JSON . stringify ( { key : 'value' } )
} )
. then ( response => { if ( response. ok) { return response. json ( ) ; } else { throw new Error ( 'Network response was not ok.' ) ; }
} )
. then ( data => console. log ( data) )
. catch ( error => console. error ( 'Error:' , error) ) ;