18天 - 常見的 HTTP 狀態碼有哪些?HTTP 請求包含哪些內容,請求頭和請求體有哪些類型?HTTP 中 GET 和 POST 的區別是什么?

常見的 HTTP 狀態碼有哪些?

HTTP 狀態碼用于指示服務器對客戶端請求的響應結果,常見的 HTTP 狀態碼可以分為以下幾類:

1. 信息類(1xx)

  • 100 Continue:客戶端應繼續發送請求。
  • 101 Switching Protocols:服務器根據客戶端的請求切換協議。

2. 成功類(2xx)

  • 200 OK:請求成功,響應體包含所請求的資源。
  • 201 Created:請求成功并且服務器創建了新的資源。
  • 202 Accepted:服務器已接受請求,但尚未處理完成。
  • 204 No Content:服務器成功處理請求,但響應體為空。

3. 重定向類(3xx)

  • 301 Moved Permanently:請求的資源已永久移動到新位置。
  • 302 Found:請求的資源臨時移動到新位置。
  • 304 Not Modified:資源未修改,客戶端可以使用緩存的版本。

4. 客戶端錯誤類(4xx)

  • 400 Bad Request:請求語法錯誤或請求參數無效。
  • 401 Unauthorized:請求未授權,需要身份驗證。
  • 403 Forbidden:服務器拒絕請求,客戶端無權限訪問。
  • 404 Not Found:請求的資源不存在。
  • 405 Method Not Allowed:請求方法不被允許。

5. 服務器錯誤類(5xx)

  • 500 Internal Server Error:服務器遇到意外情況,無法完成請求。
  • 501 Not Implemented:服務器不支持請求的功能。
  • 502 Bad Gateway:服務器作為網關或代理時,從上游服務器收到無效響應。
  • 503 Service Unavailable:服務器暫時無法處理請求,通常由于過載或維護。
  • 504 Gateway Timeout:服務器作為網關或代理時,未從上游服務器及時收到響應。

HTTP 請求包含哪些內容,請求頭和請求體有哪些類型?

HTTP 請求主要由以下幾個部分組成:

1. 請求行(Request Line)

請求行包含請求方法、請求的資源路徑以及 HTTP 協議版本。例如:

GET /index.html HTTP/1.1

2. 請求頭(Headers)

請求頭包含客戶端發送給服務器的額外信息,例如客戶端的類型、接受的內容類型、認證信息等。常見的請求頭類型包括:

  • 通用頭(General Headers):適用于請求和響應,例如 Cache-ControlConnectionDatePragma
  • 請求頭(Request Headers):僅適用于請求,例如 AcceptAccept-CharsetAccept-EncodingAccept-LanguageAuthorizationCookieHostUser-Agent
  • 響應頭(Response Headers):僅適用于響應,例如 AgeLocationServerSet-Cookie
  • 實體頭(Entity Headers):適用于請求和響應中的實體部分,例如 AllowContent-EncodingContent-LanguageContent-LengthContent-LocationContent-MD5Content-RangeContent-TypeExpiresLast-Modified

3. 請求體(Body)

請求體是請求中發送的實體內容,通常用于 POST、PUT 等方法。請求體的類型可以是多種格式,常見的包括:

  • 表單數據(application/x-www-form-urlencoded):鍵值對形式的表單數據,例如 key1=value1&key2=value2
  • 多部分表單數據(multipart/form-data):用于上傳文件等復雜數據,常用于文件上傳表單。
  • JSON 數據(application/json):以 JSON 格式發送數據,適用于現代 Web API。
  • XML 數據(application/xml):以 XML 格式發送數據。
  • 原始數據(text/plain):純文本數據。

示例

請求行和請求頭示例
GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
請求體示例(POST 請求)
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 45{"name": "John Doe", "age": 30}

在這個示例中,請求體是一個 JSON 格式的字符串,包含了用戶的信息。

HTTP 中 GET 和 POST 的區別是什么?

在 HTTP 協議中,GET 和 POST 是兩種常用的請求方法,它們在數據傳遞、安全性、使用場景等方面存在一些區別。以下是它們的主要區別:

1. 數據傳遞方式

  • GET:將請求參數附加在 URL 后面,以 ? 分隔,參數之間用 & 連接。例如:http://example.com/?key1=value1&key2=value2。這種方式適合傳遞少量數據。

  • POST:將請求參數放在請求體中,不會顯示在 URL 中。例如:

    POST /api/users HTTP/1.1
    Host: example.com
    Content-Type: application/x-www-form-urlencodedkey1=value1&key2=value2
    

    這種方式適合傳遞大量數據。

2. 數據長度限制

  • GET:由于 URL 長度有限制(不同瀏覽器和服務器限制不同,通常在 2048 字節左右),GET 請求的參數長度也受到限制。
  • POST:請求體的長度沒有限制,可以傳遞大量數據。

3. 安全性

  • GET:請求參數直接顯示在 URL 中,可能會被瀏覽器保存在歷史記錄或日志文件中,存在安全風險。
  • POST:請求參數在請求體中,不會顯示在 URL 中,相對更安全。

4. 緩存機制

  • GET:請求可以被瀏覽器緩存,適合用于獲取公共資源(如圖片、CSS 文件等)。
  • POST:請求通常不會被緩存,適合用于提交敏感數據或執行改變服務器狀態的操作。

5. 使用場景

  • GET:通常用于獲取資源,例如從服務器獲取網頁內容、搜索結果等。適合無副作用的操作。
  • POST:通常用于提交數據,例如表單提交、文件上傳等。適合需要改變服務器狀態的操作。

6. 書簽功能

  • GET:可以將請求的 URL 作為書簽保存,方便后續訪問。
  • POST:無法將請求作為書簽保存,因為請求參數在請求體中。

7. 歷史記錄

  • GET:請求的 URL 會保存在瀏覽器的歷史記錄中。
  • POST:請求的 URL 會保存在瀏覽器的歷史記錄中,但請求體中的參數不會保存。

8. 冪等性

  • GET:是冪等的,多次請求不會改變服務器狀態。
  • POST:不是冪等的,多次請求可能會導致多次數據提交,改變服務器狀態。

示例對比

GET 請求示例
GET /search?q=java+design+patterns HTTP/1.1
Host: example.com
POST 請求示例
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencodedusername=JohnDoe&password=12345

總結

  • GET 適合用于獲取資源、傳遞少量數據、可緩存的場景。
  • POST 適合用于提交數據、傳遞大量數據、需要改變服務器狀態的場景。

選擇使用 GET 還是 POST,需要根據具體需求和場景來決定,以確保數據的安全性和請求的效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897743.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IXTUR氣控永磁鐵:以高精度氣控和穩定磁場,為機器人應用提供穩定抓取力

在現代工業生產和物流領域,物料的抓取與搬運是影響生產效率和成本控制的重要環節。傳統夾爪在面對不同材質、形狀和重量的物體時,常常存在適應性差、抓取不穩定、操作復雜等問題,導致生產流程中頻繁出現停機調整,增加了人工干預成…

江科大51單片機筆記【16】AD/DA轉換(下)

寫在前言 此為博主自學江科大51單片機(B站)的筆記,方便后續重溫知識 在后面的章節中,為了防止篇幅過長和易于查找,我把一個小節分成兩部分來發,上章節主要是關于本節課的硬件介紹、電路圖、原理圖等理論知識…

【C++】 —— 筆試刷題day_4

刷題day_4 繼續加油!!! 一、Fibonacci數列 題目鏈接:Fibonacci數列 題目解析 題目要求,輸入一個數N,我們可以對N進行1/-1操作;題目讓我們輸出對N進行至少多少步可以變成Fibonacci數。 這里題目…

IP層之分片包的整合處理---BUG修復

在之前章節中,筆者就IP層之分片包的整合處理進行了概念介紹,以及代碼編寫和仿真,在整體代碼調試環節,筆者發現了一個問題,在本文中,筆者將就這個BUG進行說明,以及進行修復,講解代碼實…

修復Electron項目Insecure Content-Security-Policy(內容安全策略CSP)警告的問題

將以下代碼粘貼進html的<header>標簽內 <metahttp-equiv"Content-Security-Policy"content"default-src self; style-src self unsafe-inline; img-src self data:; "> 解釋一下上面代碼中的屬性含義 default-src self&#xff1a;配置加載策…

linux 的免密切換用戶PAM配置

/etc/pam.d/su是Linux系統中與用戶切換&#xff08;su命令&#xff09;相關的PAM&#xff08;Pluggable Authentication Modules&#xff0c;可插拔認證模塊&#xff09;配置文件。以下是對它的詳細介紹&#xff1a; 簡介 作用 PAM是一種用于管理系統認證的機制&#xff0c;…

pyspark 數據處理的三種方式RDD、DataFrame、Spark SQL案例

目錄 一、淺語二、三種數據處理方式比較2.1 RDD2.2 DataFrame2.3 Spark SQL 三、三種方法的創建方式3.1 創建RDD3.2 創建DataFrame3.2.1 創建sqlContext3.2.2 定義Schema3.2.3 創建DataFrame 3.3 創建SparkSQL3.3.1 登錄臨時表3.3.2 使用sparkSQL 四、三種方法顯示部分字段4.1 …

文件解析漏洞靶機---- 練習通關攻略

1.安裝靶機 點擊 hackme.ova 文件&#xff0c;直接導入虛擬機&#xff0c;選擇存儲位置 2. 開啟靶機 3. kali掃描同C段的ip&#xff0c;找到靶機ip nmap 192.168.182.1/24 經判斷&#xff0c;靶機ip為&#xff1a;192.168.182.157 開啟端口 http 80 、ssh 遠程連接 22 4…

信號處理抽取多項濾波的數學推導與仿真

昨天的《信號處理之插值、抽取與多項濾波》&#xff0c;已經介紹了插值抽取的多項濾率&#xff0c;今天詳細介紹多項濾波的數學推導&#xff0c;并附上實戰仿真代碼。 一、數學變換推導 1. 多相分解的核心思想 將FIR濾波器的系數 h ( n ) h(n) h(n)按相位分組&#xff0c;每…

【大模型基礎_毛玉仁】2.3 基于 Encoder-only 架構的大語言模型

更多內容&#xff1a;XiaoJ的知識星球 目錄 2.3 基于Encoder-only 架構的大語言模型2.3.1 Encoder-only 架構2.3.2 BERT 語言模型1&#xff09;BERT 模型結構2&#xff09;BERT 預訓練方式3&#xff09;BERT 下游任務 2.3.3 BERT 衍生語言模型1&#xff09;RoBERTa 語言模型2&a…

AIP-165 按條件刪除

編號165原文鏈接https://google.aip.dev/165狀態批準創建日期2019-12-18更新日期2019-12-18 有時API需要提供一種機制&#xff0c;按照一些過濾參數刪除大量資源&#xff0c;而非提供待刪除的各資源名字。 這是一個稀有的場景&#xff0c;用于用戶一次性刪除數千或更多資源的…

【Maven教程與實戰案例】

文章目錄 前言一、Maven是什么&#xff1f;二、Maven的安裝與配置1. 安裝前置條件2. 下載與配置 Maven3. 驗證安裝 三、Maven的核心概念1. POM.xml 文件2. 構建生命周期與插件機制 四、實戰項目示例1. 項目目錄結構2. 編寫代碼App.javaAppTest.java 3. 構建項目4. 運行項目 前言…

20250310:OpenCV mat對象與base64互轉

代碼: https://github.com/ReneNyffenegger/cpp-base64 指南:https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/ 實操:

概率論的基本知識

逆概率還不懂&#xff0c;改天再想想。 聯合概率 聯合概率&#xff08;Joint Probability&#xff09; 是概率論中的一個重要概念&#xff0c;用于描述多個隨機變量同時取某些值的概率。聯合概率可以幫助我們理解多個變量之間的關系。

pytest數據庫測試文章推薦

參考鏈接&#xff1a; 第一部分&#xff1a;http://alextechrants.blogspot.fi/2013/08/unit-testing-sqlalchemy-apps.html第二部分&#xff1a;http://alextechrants.blogspot.fi/2014/01/unit-testing-sqlalchemy-apps-part-2.html

如何自己做奶茶,從此告別奶茶店

自制大白兔奶茶&#xff0c;奶香與茶香激情碰撞&#xff0c;每一口都是香濃與甜蜜的雙重誘惑&#xff0c;好喝到跺腳&#xff01;絲滑口感在舌尖舞動&#xff0c;仿佛味蕾在開派對。 簡單幾步就能復刻&#xff0c;成本超低&#xff0c;輕松在家享受奶茶自由。 材料:大白兔奶糖&…

SOA(面向服務架構)與微服務架構的區別與聯系

SOA&#xff08;面向服務架構&#xff09;與微服務架構的區別與聯系 1. 引言 在現代軟件架構中&#xff0c;SOA&#xff08;Service-Oriented Architecture&#xff0c;面向服務架構&#xff09;和微服務架構&#xff08;Microservices Architecture&#xff09;是兩種常見的…

LLM的準確率評估采用什么方式:準確率評估使用的是 `sklearn.metrics` 模塊中的 `accuracy_score` 函數

LLM的準確率評估采用什么方式:準確率評估使用的是 sklearn.metrics 模塊中的 accuracy_score 函數 評估方式 代碼里的準確率評估是基于每個樣本最后一個預測的 token 與真實的 token 進行對比。具體來說,它會遍歷測試數據集中的每個樣本,使用模型預測出最后一個 token 的 …

文件和異常

從文件中讀取數據 讀取整個文件 讀取整個文件 要讀取文件&#xff0c;需要一個包含幾行文本的文件。下面首先創建一個文件&#xff0c;它包含精確 到小數點后30位的圓周率值&#xff0c;且在小數點后每10位處換行&#xff1a; pi_digits.txt 3.14159265358979323846264338…

2025最新版Windows通過GoLand遠程連接Linux構建Go項目保姆級教學

以Ubuntu24.04和GoLand2024.1.6為例子&#xff0c;演示如何在Windows上通過GoLand遠程連接Linux進行Go編程。 通過go version指令可以發現當前Ubuntu系統沒有安裝go。 go version 通過指令安裝go&#xff0c;其他系統可以通過wget安裝&#xff0c;要指定安裝的具體go版本&…