http必備知識點:http請求與js及狀態碼

HTTP(Hyper Text Transfer Protocol(超文本傳輸協議))是一個簡單的請求-響應協議,它通常運行在 TCP 之上。它指定了客戶端可能發送給服務器什麼樣的消息以及得到什麼樣的響應。請求和響應消息的頭以 ASCII 碼形式給出;而消息內容則具有一個類似 MIME 的格式。HTTP 是應用層協議,同其他應用層協議一樣,是爲了實現某一類具體應用的協議,並由某一運行在用戶空間的應用程序來實現其功能。HTTP 是一種協議規範,這種規範記錄在文檔上,爲真正通過 HTTP 協議進行通信的 HTTP 的實現程序。HTTP 協議是基於 C/S 架構進行通信的,而 HTTP 協議的服務器端實現程序有 httpd、nginx 等,其客戶端的實現程序主要是 Web 瀏覽器。

  • HTTP 是一種無狀態協議,即對於事務處理沒有記憶能力,服務器不保留與客戶交易時的任何狀態,如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。
  • HTTP 是一種面向對象的協議。允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,並允許對數據進行壓縮傳送。
  • HTTP 規範定義了 9 種請求方法:get、post、delete、put、head、trace、options、patch、connect。
  • 默認端口 80

客戶端發送一個 HTTP 請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行、請求數據。
例如:

xml.open("POST", "1.php", true); //請求行
xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //請求頭部
xml.send("name=123&age=27"); //請求數據

HTTP 響應狀態行、消息報頭、空行和響應正文。
例如:

HTTP/1.1 200 OK       // 狀態行
X-Powered-By: Express               // 消息報頭
date: Wed, 11 Sep 2019 02:37:31 GMT // 消息報頭
content-type: application/json;charset=UTF-8 // 消息報頭
transfer-encoding: chunked // 消息報頭
connection: close

HTTP 響應頭:

  • Allow 服務器支持哪些請求方法(如 GET、POST 等)。
  • Content-Encoding 文檔的編碼(Encode)方法。只有在解碼之後纔可以得到 Content-Type 頭指定的內容類型。利用 gzip 壓縮文檔能夠顯著地減少 HTML 文檔的下載時間。
  • Content-Length 表示內容長度。只有當瀏覽器使用持久 HTTP 連接時才需要這個數據。
  • Content-Type 表示後面的文檔屬於什麼 MIME 類型。Servlet 默認爲 text/plain,但通常需要顯式地指定爲 text/html(content-type:text/xml; charset= utf-8)。
  • Date 當前的 GMT 時間
  • Expires 應該在什麼時候認爲文檔已經過期,從而不再緩存它
  • Last-Modified 文檔的最後改動時間
  • Location 表示客戶應當到哪裏去提取文檔
  • Refresh 表示瀏覽器應該在多少時間之後刷新文檔,以秒計
  • Server 服務器名字
  • Set-Cookie 設置和頁面關聯的 Cookie
  • WWW-Authenticate 客戶應該在 Authorization 頭中提供什麼類型的授權信息

HTTP 狀態碼
常見:

  • 200 - 請求成功
  • 301 - 資源(網頁等)被永久轉移到其它 URL
  • 404 - 請求的資源(網頁等)不存在
  • 500 - 內部服務器錯誤

5 種分類:

  • 1** 信息,服務器收到請求,需要請求者繼續執行操作
    1)100 Continue 繼續。客戶端應繼續其請求
    2)101 Switching Protocols 切換協議。服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到 HTTP 的新版本協議

  • 2** 成功,操作被成功接收並處理
    1)200 OK 請求成功。一般用於 GET 與 POST 請求
    2)201 Created 已創建。成功請求並創建了新的資源
    3)202 Accepted 已接受。已經接受請求,但未處理完成
    4)203 Non-Authoritative Information 非授權信息。請求成功。但返回的 meta 信息不在原始的服務器,而是一個副本
    5)204 No Content 無內容。服務器成功處理,但未返回內容。在未更新網頁的情況下,可確保瀏覽器繼續顯示當前文檔
    6)205 Reset Content 重置內容。服務器處理成功,用戶終端(例如:瀏覽器)應重置文檔視圖。可通過此返回碼清除瀏覽器的表單域
    7)206 Partial Content 部分內容。服務器成功處理了部分 GET 請求

  • 3** 重定向,需要進一步的操作以完成請求
    1)300 Multiple Choices 多種選擇。請求的資源可包括多個位置,相應可返回一個資源特徵與地址的列表用於用戶終端(例如:瀏覽器)選擇
    2)301 Moved Permanently 永久移動。請求的資源已被永久的移動到新 URI,返回信息會包括新的 URI,瀏覽器會自動定向到新 URI。今後任何新的請求都應使用新的 URI 代替
    3)302 Found 臨時移動。與 301 類似。但資源只是臨時被移動。客戶端應繼續使用原有 URI
    4)303 See Other 查看其它地址。與 301 類似。使用 GET 和 POST 請求查看
    5)304 Not Modified 未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期之後修改的資源
    6)305 Use Proxy 使用代理。所請求的資源必須通過代理訪問
    7)306 Unused 已經被廢棄的 HTTP 狀態碼
    8)307 Temporary Redirect 臨時重定向。與 302 類似。使用 GET 請求重定向

  • 4** 客戶端錯誤,請求包含語法錯誤或無法完成請求

1)400 Bad Request 客戶端請求的語法錯誤,服務器無法理解
2)401 Unauthorized 請求要求用戶的身份認證
3)402 Payment Required 保留,將來使用
4)403 Forbidden 服務器理解請求客戶端的請求,但是拒絕執行此請求
5)404 Not Found 服務器無法根據客戶端的請求找到資源(網頁)。通過此代碼,網站設計人員可設置"您所請求的資源無法找到"的個性頁面
6)405 Method Not Allowed 客戶端請求中的方法被禁止
7)406 Not Acceptable 服務器無法根據客戶端請求的內容特性完成請求
8)407 Proxy Authentication Required 請求要求代理的身份認證,與 401 類似,但請求者應當使用代理進行授權
9)408 Request Time-out 服務器等待客戶端發送的請求時間過長,超時
10)409 Conflict 服務器完成客戶端的 PUT 請求時可能返回此代碼,服務器處理請求時發生了衝突
11)410 Gone 客戶端請求的資源已經不存在。410 不同於 404,如果資源以前有現在被永久刪除了可使用 410 代碼,網站設計人員可通過 301 代碼指定資源的新位置
12)411 Length Required 服務器無法處理客戶端發送的不帶 Content-Length 的請求信息
13)412 Precondition Failed 客戶端請求信息的先決條件錯誤
14)413 Request Entity Too Large 由於請求的實體過大,服務器無法處理,因此拒絕請求。爲防止客戶端的連續請求,服務器可能會關閉連接。如果只是服務器暫時無法處理,則會包含一個 Retry-After 的響應信息
15)414 Request-URI Too Large 請求的 URI 過長(URI 通常爲網址),服務器無法處理
16)415 Unsupported Media Type 服務器無法處理請求附帶的媒體格式
17)416 Requested range not satisfiable 客戶端請求的範圍無效
18)417 Expectation Failed 服務器無法滿足 Expect 的請求頭信息

  • 5** 服務器錯誤,服務器在處理請求的過程中發生了錯誤

1)500 Internal Server Error 服務器內部錯誤,無法完成請求
2)501 Not Implemented 服務器不支持請求的功能,無法完成請求
3)502 Bad Gateway 作爲網關或者代理工作的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應
4)503 Service Unavailable 由於超載或系統維護,服務器暫時的無法處理客戶端的請求。延時的長度可包含在服務器的 Retry-After 頭信息中
5)504 Gateway Time-out 充當網關或代理的服務器,未及時從遠端服務器獲取請求
6)505 HTTP Version not supported 服務器不支持請求的 HTTP 協議的版本,無法完成處理

http在JavaScript中的體現:
https://blog.csdn.net/qq_26769677/article/details/100603079

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章