chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HTTP相關(guān)返回值異常如何解決(上篇)

青山老竹農(nóng) ? 來(lái)源:jf_82863998 ? 作者:jf_82863998 ? 2024-10-20 16:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?

今天我們講講HTTP相關(guān)返回值異常如何解決(實(shí)例持續(xù)更新中)

HTTP介紹

HTTP(超文本傳輸協(xié)議,Hypertext Transfer Protocol)是用于在網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)交換的應(yīng)用層協(xié)議。它是萬(wàn)維網(wǎng)(WWW)的基礎(chǔ),允許客戶端(通常是網(wǎng)頁(yè)瀏覽器)與服務(wù)器之間進(jìn)行通信。以下是對(duì) HTTP 的一些基本介紹:

  1. 基本概念 請(qǐng)求-響應(yīng)模型: HTTP 使用請(qǐng)求-響應(yīng)模型??蛻舳税l(fā)送請(qǐng)求,服務(wù)器處理請(qǐng)求并返回響應(yīng)。 無(wú)狀態(tài)協(xié)議: 每個(gè)請(qǐng)求都是獨(dú)立的,服務(wù)器不會(huì)記住之前的請(qǐng)求狀態(tài)。這種設(shè)計(jì)簡(jiǎn)化了服務(wù)器的實(shí)現(xiàn),但可能需要其他機(jī)制(如 cookies)來(lái)管理會(huì)話狀態(tài)。
  2. 請(qǐng)求和響應(yīng)請(qǐng)求:

請(qǐng)求行: 包含請(qǐng)求方法(如 GET、POST)、請(qǐng)求的 URL 和 HTTP 版本。

請(qǐng)求頭: 提供有關(guān)客戶端環(huán)境的信息(如 User-Agent、Accept 等)。

請(qǐng)求體: 僅在某些請(qǐng)求方法(如 POST)中使用,包含要發(fā)送的數(shù)據(jù)。

響應(yīng):

狀態(tài)行: 包含 HTTP 版本、狀態(tài)碼(如 200、404、500)和狀態(tài)描述。

響應(yīng)頭: 提供有關(guān)響應(yīng)的信息(如 Content-Type、Content-Length 等)。

響應(yīng)體: 包含實(shí)際傳輸?shù)臄?shù)據(jù)(如 HTML 文檔、圖像等)。

  1. 常見的 HTTP 方法GET: 請(qǐng)求指定的資源,通常用于獲取數(shù)據(jù)。(模組支持)
    POST: 向指定資源提交數(shù)據(jù),通常用于創(chuàng)建或更新數(shù)據(jù)。(模組支持)
    PUT: 更新指定資源的內(nèi)容。
    DELETE: 刪除指定的資源。
    HEAD: 類似于 GET,但服務(wù)器只返回響應(yīng)頭,不返回響應(yīng)體。
  2. HTTP 狀態(tài)碼 HTTP 狀態(tài)碼用于表示請(qǐng)求的結(jié)果,分為五類:
    1xx: 信息性狀態(tài)碼(如 100 Continue)。
    2xx: 成功狀態(tài)碼(如 200 OK)。
    3xx: 重定向狀態(tài)碼(如 301 Moved Permanently)。
    4xx: 客戶端錯(cuò)誤狀態(tài)碼(如 404 Not Found)。
    5xx: 服務(wù)器錯(cuò)誤狀態(tài)碼(如 500 Internal Server Error)。

**HTTP客戶端錯(cuò)誤狀態(tài)碼情況

案例分析以及如何解決**

一、1xx信息性狀態(tài)碼

這些狀態(tài)碼表示請(qǐng)求已被接收,繼續(xù)處理請(qǐng)求。

100 Continue: 客戶端應(yīng)繼續(xù)發(fā)送請(qǐng)求的剩余部分。

1.1 狀態(tài)碼100的含義:

HTTP 狀態(tài)碼 100 Continue 是一個(gè)信息性狀態(tài)碼,表示客戶端應(yīng)繼續(xù)發(fā)送請(qǐng)求的剩余部分。它通常是在客戶端發(fā)送一個(gè)包含 Expect: 100-continue 頭的請(qǐng)求時(shí),服務(wù)器響應(yīng)的。

使用場(chǎng)景:

大文件上傳: 當(dāng)客戶端要上傳一個(gè)大文件時(shí),它可以先發(fā)送一個(gè)請(qǐng)求頭,詢問(wèn)服務(wù)器是否準(zhǔn)備好接收文件。這時(shí),服務(wù)器可以返回 100 Continue,表示可以繼續(xù)上傳文件。

節(jié)省帶寬: 如果服務(wù)器無(wú)法處理請(qǐng)求,返回 100 Continue 可以避免客戶端發(fā)送大量數(shù)據(jù),從而節(jié)省帶寬和資源。

具體工作流程:

客戶端發(fā)送請(qǐng)求: 客戶端發(fā)送一個(gè)帶有 Expect: 100-continue 的請(qǐng)求頭。 服務(wù)器響應(yīng): 如果服務(wù)器準(zhǔn)備好接收請(qǐng)求,返回 100 Continue,指示客戶端繼續(xù)發(fā)送請(qǐng)求體。 如果服務(wù)器無(wú)法處理請(qǐng)求(例如,身份驗(yàn)證失敗或請(qǐng)求格式不正確),則服務(wù)器可以直接返回相應(yīng)的錯(cuò)誤狀態(tài)碼(如 401 或 403),而不是 100 Continue。

101 Switching Protocols: 服務(wù)器已理解客戶端的請(qǐng)求,并將其協(xié)議更改為客戶端所請(qǐng)求的協(xié)議。

1.2 狀態(tài)碼101的含義:

HTTP 狀態(tài)碼 101 Switching Protocols 是一個(gè)信息性狀態(tài)碼,表示服務(wù)器已經(jīng)理解了客戶端的請(qǐng)求,并將協(xié)議更改為客戶端所請(qǐng)求的協(xié)議。這通常用于在 HTTP 協(xié)議和其他協(xié)議之間進(jìn)行切換,例如從 HTTP 協(xié)議切換到 WebSocket 協(xié)議。

使用場(chǎng)景

WebSocket 連接: 在建立 WebSocket 連接時(shí),客戶端首先發(fā)送一個(gè) HTTP 請(qǐng)求,要求服務(wù)器將協(xié)議切換到 WebSocket。若服務(wù)器支持這一請(qǐng)求并同意切換,它會(huì)返回 101 狀態(tài)碼。

協(xié)議升級(jí): 其他情況下,當(dāng)客戶端請(qǐng)求服務(wù)器使用不同的協(xié)議進(jìn)行通信時(shí)(如從 HTTP/1.1 切換到 HTTP/2),也會(huì)用到此狀態(tài)碼。

具體工作流程

客戶端發(fā)送請(qǐng)求: 客戶端發(fā)送一個(gè)帶有 Upgrade 頭的請(qǐng)求,表明希望切換協(xié)議。

請(qǐng)求示例:

  • GET /chat HTTP/1.1
  • Host: example.com
  • Upgrade: websocket
  • Connection: Upgrade
  • 服務(wù)器響應(yīng): 如果服務(wù)器支持請(qǐng)求的協(xié)議并同意切換,它會(huì)返回 101 Switching Protocols,表示協(xié)議已成功切換。

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 101 Switching Protocols
  • Upgrade: websocket
  • Connection: Upgrade
  • 后續(xù)通信: 協(xié)議切換后,客戶端和服務(wù)器可以使用新協(xié)議進(jìn)行后續(xù)通信。

二、2xx成功狀態(tài)碼

這些狀態(tài)碼表示請(qǐng)求已成功處理。

200 OK: 請(qǐng)求成功,通常返回請(qǐng)求的資源。

狀態(tài)碼200的含義:

HTTP 狀態(tài)碼 200 OK 是最常見的成功響應(yīng)狀態(tài)碼,表示請(qǐng)求已成功處理。它通常用于標(biāo)準(zhǔn)的 GET 或 POST 請(qǐng)求,表明服務(wù)器已成功接收到請(qǐng)求并返回了所請(qǐng)求的資源。

使用場(chǎng)景
  • GET 請(qǐng)求: 當(dāng)客戶端請(qǐng)求某個(gè)資源(如網(wǎng)頁(yè)、圖片等),并且服務(wù)器成功找到并返回該資源時(shí),服務(wù)器會(huì)返回 200 OK。
  • POST 請(qǐng)求: 當(dāng)客戶端向服務(wù)器提交數(shù)據(jù)(如表單數(shù)據(jù))并且服務(wù)器成功處理這些數(shù)據(jù)時(shí),也會(huì)返回 200 OK。此時(shí),響應(yīng)體可能包含操作結(jié)果的信息。
示例

圖片?

201 Created: 請(qǐng)求成功并創(chuàng)建了新的資源。

狀態(tài)碼201的含義:

HTTP 狀態(tài)碼 201 Created 表示請(qǐng)求已成功處理,并且由于該請(qǐng)求,服務(wù)器創(chuàng)建了一個(gè)新的資源。這個(gè)狀態(tài)碼通常用于 POST 請(qǐng)求,特別是在客戶端向服務(wù)器提交數(shù)據(jù)以創(chuàng)建新資源時(shí)。

使用場(chǎng)景

資源創(chuàng)建: 當(dāng)客戶端通過(guò) POST 請(qǐng)求向服務(wù)器發(fā)送數(shù)據(jù)(例如,提交表單數(shù)據(jù))并成功創(chuàng)建一個(gè)新資源時(shí),服務(wù)器會(huì)返回 201 Created。

API 設(shè)計(jì): 在 RESTful API 中,201 狀態(tài)碼常用于表示新資源的創(chuàng)建成功,并且通常在響應(yīng)中包含指向該新資源的 URI。

示例

創(chuàng)建新資源的 POST 請(qǐng)求示例:

  • POST /api/users HTTP/1.1
  • Host: example.com
  • Content-Type: application/json
  • Content-Length: 45

{"name": "John Doe", "email": "john@example.com"} 服務(wù)器響應(yīng)示例:

  • HTTP/1.1 201 Created
  • Location: /api/users/123
  • Content-Type: application/json

{"id": 123, "name": "John Doe", "email": "john@example.com"}

關(guān)鍵要點(diǎn)
  • Location 頭: 通常在響應(yīng)中包含 Location 頭,指向新創(chuàng)建資源的 URI。
  • 響應(yīng)體: 可以在響應(yīng)體中返回新資源的詳細(xì)信息,幫助客戶端確認(rèn)創(chuàng)建結(jié)果。

202 Accepted: 請(qǐng)求已接受,但尚未處理。

狀態(tài)碼202的含義:

HTTP 狀態(tài)碼 202 Accepted 表示請(qǐng)求已被接受進(jìn)行處理,但尚未完成。這意味著請(qǐng)求的處理是異步的,服務(wù)器已經(jīng)接收到請(qǐng)求并將其放入處理隊(duì)列中,但尚未提供最終結(jié)果。

使用場(chǎng)景

異步處理: 202 狀態(tài)碼通常用于那些需要較長(zhǎng)時(shí)間才能完成的操作,例如上傳大文件、復(fù)雜的數(shù)據(jù)處理或與外部服務(wù)的交互。

任務(wù)排隊(duì): 在某些情況下,服務(wù)器會(huì)返回 202 狀態(tài)碼以指示請(qǐng)求已被接受,但實(shí)際的處理將在后續(xù)時(shí)間內(nèi)完成。

示例

異步請(qǐng)求的 POST 請(qǐng)求示例:

  • POST /api/process-data HTTP/1.1
  • Host: example.com
  • Content-Type: application/json
  • Content-Length: 50

{"data": "large dataset or task details"} 服務(wù)器響應(yīng)示例:

  • HTTP/1.1 202 Accepted
  • Content-Type: application/json

{"message": "Your request is being processed"}

關(guān)鍵要點(diǎn)

請(qǐng)求已接受: 202 狀態(tài)碼表明請(qǐng)求已經(jīng)被接受,而不是直接表示成功完成。 結(jié)果不可用: 由于處理是異步的,客戶端通常需要通過(guò)其他機(jī)制(如輪詢或回調(diào))來(lái)獲取處理結(jié)果。

203 Non-Authoritative Information: 服務(wù)器成功處理了請(qǐng)求,但返回的信息可能來(lái)自另一來(lái)源。

狀態(tài)碼203的含義:

HTTP 狀態(tài)碼 203 Non-Authoritative Information 表示請(qǐng)求已成功處理,但返回的信息可能不是來(lái)自原始服務(wù)器,而是來(lái)自一個(gè)代理服務(wù)器或其他中間實(shí)體。這意味著響應(yīng)的內(nèi)容可能經(jīng)過(guò)了修改或附加了額外的信息。

使用場(chǎng)景

代理服務(wù)器: 當(dāng)客戶端通過(guò)代理服務(wù)器發(fā)送請(qǐng)求時(shí),代理可能會(huì)返回 203 狀態(tài)碼以指示響應(yīng)的內(nèi)容不是來(lái)自原始服務(wù)器。

內(nèi)容修改: 如果代理對(duì)響應(yīng)進(jìn)行了某種形式的修改,比如添加了額外的頭信息,服務(wù)器可能會(huì)返回 203 狀態(tài)碼,告知客戶端這部分信息可能不具有權(quán)威性。

示例

通過(guò)代理服務(wù)器的請(qǐng)求示例:

  • GET /api/resource HTTP/1.1
  • Host: example.com

代理服務(wù)器的響應(yīng)示例:

  • HTTP/1.1 203 Non-Authoritative Information
  • Content-Type: application/json

{"data": "This data is modified or supplemented by the proxy"}

關(guān)鍵要點(diǎn)

非權(quán)威性信息: 203 狀態(tài)碼用于表示返回的信息可能不是最原始或權(quán)威的,客戶端應(yīng)謹(jǐn)慎對(duì)待這些信息。

不常用: 在實(shí)際應(yīng)用中,203 狀態(tài)碼的使用相對(duì)較少,大多數(shù)情況下,客戶端和服務(wù)器之間的直接通信更為常見。

204 No Content: 請(qǐng)求成功,但沒有返回內(nèi)容。

狀態(tài)碼204的含義:

HTTP 狀態(tài)碼 204 No Content 表示請(qǐng)求已成功處理,但沒有內(nèi)容返回。這通常用于處理成功的請(qǐng)求,但沒有需要返回給客戶端的實(shí)體內(nèi)容。

使用場(chǎng)景

成功處理的請(qǐng)求: 當(dāng)客戶端發(fā)送請(qǐng)求(例如,DELETE 請(qǐng)求)并且服務(wù)器成功處理了該請(qǐng)求,但不需要返回任何內(nèi)容時(shí),可以使用 204 狀態(tài)碼。

更新操作: 在某些情況下,客戶端可能發(fā)送更新請(qǐng)求(如 PUT),服務(wù)器成功處理后,可以返回 204 狀態(tài)碼而不返回任何數(shù)據(jù)。

保持連接: 204 狀態(tài)碼可以用于保持與客戶端的連接,而不傳送實(shí)際的數(shù)據(jù)內(nèi)容。

示例

成功刪除資源的 DELETE 請(qǐng)求示例:

  • DELETE /api/resource/123 HTTP/1.1
  • Host: example.com

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 204 No Content

關(guān)鍵要點(diǎn)

無(wú)內(nèi)容返回: 204 狀態(tài)碼明確表示沒有返回的內(nèi)容,客戶端不應(yīng)期望任何響應(yīng)體。

保持連接: 由于沒有內(nèi)容,204 響應(yīng)通常具有較小的負(fù)擔(dān)和較快的處理速度,有助于提高性能。

205 Reset Content: 請(qǐng)求成功,要求客戶端重置文檔視圖。

狀態(tài)碼205的含義:

HTTP 狀態(tài)碼 205 Reset Content 表示請(qǐng)求已成功處理,但客戶端需要重置視圖或輸入字段。這通常用于表單提交后,服務(wù)器希望客戶端清除或重置其當(dāng)前的內(nèi)容。

使用場(chǎng)景

表單處理: 當(dāng)客戶端提交表單后,服務(wù)器可能會(huì)返回 205 狀態(tài)碼,指示客戶端重置表單輸入內(nèi)容,以便用戶可以進(jìn)行新的輸入。

UI 狀態(tài)重置: 在某些應(yīng)用程序中,服務(wù)器可能希望客戶端清除當(dāng)前的視圖狀態(tài)或數(shù)據(jù),以確保用戶體驗(yàn)的一致性。

示例

表單提交的 POST 請(qǐng)求示例:

  • POST /api/submit-form HTTP/1.1
  • Host: example.com
  • Content-Type: application/x-www-form-urlencoded

name=John&email=john@example.com 服務(wù)器響應(yīng)示例:

  • HTTP/1.1 205 Reset Content
關(guān)鍵要點(diǎn)

重置內(nèi)容: 205 狀態(tài)碼明確表示客戶端應(yīng)該重置其當(dāng)前的內(nèi)容或視圖狀態(tài),通常與表單操作相關(guān)。

不返回內(nèi)容: 和 204 狀態(tài)碼類似,205 響應(yīng)通常不包含實(shí)體內(nèi)容。

206 Partial Content: 服務(wù)器成功處理了部分 GET 請(qǐng)求,返回的是部分資源。

狀態(tài)碼206的含義:

HTTP 狀態(tài)碼 206 Partial Content 表示服務(wù)器成功處理了部分 GET 請(qǐng)求。這通常用于當(dāng)客戶端請(qǐng)求資源的某一部分時(shí),服務(wù)器能夠滿足該請(qǐng)求并返回所請(qǐng)求的部分內(nèi)容。

使用場(chǎng)景

范圍請(qǐng)求: 客戶端可能會(huì)使用 Range 請(qǐng)求頭來(lái)請(qǐng)求資源的特定部分(例如,視頻流、音頻流或大型文件的下載)。服務(wù)器根據(jù)請(qǐng)求的范圍返回相應(yīng)的部分內(nèi)容。

大文件下載: 當(dāng)用戶下載大文件時(shí),支持恢復(fù)下載的客戶端可以請(qǐng)求文件的特定字節(jié)范圍,以便在網(wǎng)絡(luò)中斷時(shí)能夠繼續(xù)下載。

示例

范圍請(qǐng)求的 GET 請(qǐng)求示例:

  • GET /large-file.zip HTTP/1.1
  • Host: example.com
  • Range: bytes=0-499

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 206 Partial Content
  • Content-Range: bytes 0-499/123456
  • Content-Length: 500
  • Content-Type: application/zip
關(guān)鍵要點(diǎn)

部分內(nèi)容: 206 狀態(tài)碼表示請(qǐng)求成功并返回的是請(qǐng)求的部分內(nèi)容,而不是整個(gè)資源。

Content-Range 頭: 響應(yīng)中會(huì)包含 Content-Range 頭,指示返回的內(nèi)容范圍和資源的總大小。

三、3xx重定向狀態(tài)碼

這些狀態(tài)碼表示客戶端需要進(jìn)一步操作才能完成請(qǐng)求。

300 Multiple Choices: 請(qǐng)求的資源有多種選擇,客戶端可以選擇其中一個(gè)。

狀態(tài)碼300的含義:

HTTP 狀態(tài)碼 300 Multiple Choices 表示請(qǐng)求的資源可以有多種表示,客戶端可以選擇其中之一。這個(gè)狀態(tài)碼通常用于指示用戶或應(yīng)用程序有多個(gè)選項(xiàng)可供選擇,并且服務(wù)器提供了這些選項(xiàng)的列表。

使用場(chǎng)景

資源重定向: 當(dāng)請(qǐng)求的資源有多個(gè)可用版本(例如,不同語(yǔ)言的網(wǎng)頁(yè)、不同格式的文件等),服務(wù)器會(huì)返回 300 狀態(tài)碼,指明可選的資源。

內(nèi)容協(xié)商: 服務(wù)器可能根據(jù)請(qǐng)求頭(如 Accept 或 Accept-Language)提供不同的響應(yīng)選項(xiàng),讓客戶端選擇最合適的內(nèi)容。

示例

請(qǐng)求的 GET 請(qǐng)求示例:

  • GET /example HTTP/1.1
  • Host: example.com

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 300 Multiple Choices
  • Content-Type: text/html

圖片?

關(guān)鍵要點(diǎn)
  • 選擇性: 300 狀態(tài)碼表示客戶端可以選擇多個(gè)資源,通常伴隨響應(yīng)內(nèi)容列出這些選項(xiàng)。
  • 用戶體驗(yàn): 該狀態(tài)碼可以提升用戶體驗(yàn),讓用戶根據(jù)需要選擇最適合的資源。

301 Moved Permanently: 請(qǐng)求的資源已被永久移動(dòng)到新位置,返回的新 URI 在響應(yīng)中提供。

狀態(tài)碼301的含義:

HTTP 狀態(tài)碼 301 Moved Permanently 表示請(qǐng)求的資源已經(jīng)永久移動(dòng)到一個(gè)新的 URI(統(tǒng)一資源標(biāo)識(shí)符),并且所有未來(lái)的請(qǐng)求都應(yīng)使用新的 URI。這個(gè)狀態(tài)碼通常用于網(wǎng)頁(yè)重定向,告知搜索引擎和客戶端該資源的更新位置。

使用場(chǎng)景

網(wǎng)站重構(gòu): 當(dāng)網(wǎng)站的結(jié)構(gòu)或域名發(fā)生變化時(shí),可以使用 301 狀態(tài)碼來(lái)指向新的地址,從而確保用戶和搜索引擎能夠正確找到頁(yè)面。

SEO 優(yōu)化: 使用 301 重定向可以將舊頁(yè)面的權(quán)重傳遞給新頁(yè)面,有助于保持搜索引擎排名。

內(nèi)容遷移: 當(dāng)資源從一個(gè)位置移動(dòng)到另一個(gè)位置,但希望保持用戶和外部鏈接的有效性時(shí),使用 301 重定向是一個(gè)合適的選擇。

示例

請(qǐng)求的 GET 請(qǐng)求示例:

  • GET /old-page HTTP/1.1
  • Host: example.com

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 301 Moved Permanently
  • Location: https://example.com/new-page
  • Content-Type: text/html

圖片?

關(guān)鍵要點(diǎn)
  • Location 頭: 響應(yīng)中包含 Location 頭,指示新的 URI。客戶端應(yīng)使用該 URI 進(jìn)行后續(xù)請(qǐng)求。
  • 搜索引擎友好: 301 狀態(tài)碼告知搜索引擎該頁(yè)面永久移動(dòng),搜索引擎會(huì)更新其索引以反映這一變化。

302 Found: 請(qǐng)求的資源臨時(shí)移動(dòng)到新位置,客戶端應(yīng)使用新 URI 繼續(xù)請(qǐng)求。

狀態(tài)碼302的含義:

HTTP 狀態(tài)碼 302 Found 表示請(qǐng)求的資源臨時(shí)被移動(dòng)到另一個(gè) URI。當(dāng)客戶端接收到這個(gè)狀態(tài)碼時(shí),它應(yīng)立即使用新的 URI 進(jìn)行后續(xù)請(qǐng)求。這種狀態(tài)碼通常用于臨時(shí)重定向,意味著原始 URI 仍然有效,未來(lái)的請(qǐng)求可能仍然會(huì)返回原始資源。

使用場(chǎng)景

臨時(shí)重定向: 在需要臨時(shí)更改資源位置時(shí),例如網(wǎng)站維護(hù)或臨時(shí)活動(dòng)的頁(yè)面,302 狀態(tài)碼是適合的選擇。

用戶登錄流程: 在用戶成功登錄后,可以使用 302 狀態(tài)碼將用戶重定向到他們請(qǐng)求的頁(yè)面。

A/B 測(cè)試: 在進(jìn)行 A/B 測(cè)試時(shí),可以使用 302 狀態(tài)碼將用戶臨時(shí)重定向到不同的頁(yè)面進(jìn)行分析。

示例

請(qǐng)求的 GET 請(qǐng)求示例:

  • GET /old-page HTTP/1.1
  • Host: example.com

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 302 Found
  • Location: https://example.com/new-page
  • Content-Type: text/html

圖片?

關(guān)鍵要點(diǎn)
  • Location 頭: 響應(yīng)中包含 Location 頭,指示新的臨時(shí) URI??蛻舳藨?yīng)使用該 URI 進(jìn)行后續(xù)請(qǐng)求。
  • 緩存行為: 302 狀態(tài)碼通常不會(huì)被緩存,因?yàn)樗硎九R時(shí)重定向。

303 See Other: 對(duì)請(qǐng)求的響應(yīng)可在不同 URI 處找到,客戶端應(yīng)使用 GET 方法請(qǐng)求該 URI。

狀態(tài)碼303的含義:

HTTP 狀態(tài)碼 303 See Other 表示客戶端應(yīng)使用 GET 方法請(qǐng)求另一個(gè) URI 來(lái)獲取所需的資源。它通常用于在處理 POST 請(qǐng)求后重定向客戶端到一個(gè)新的頁(yè)面。這一狀態(tài)碼的主要目的是確??蛻舳双@取資源時(shí)使用的是正確的 HTTP 方法。

使用場(chǎng)景

表單提交: 在用戶提交表單(例如,登錄或注冊(cè))后,服務(wù)器可以返回 303 狀態(tài)碼,將用戶重定向到一個(gè)結(jié)果頁(yè)面,而不是重新提交表單。這有助于避免重復(fù)提交。

RESTful API: 在 RESTful 服務(wù)中,303 可以用于指示客戶端在某個(gè)操作后應(yīng)獲取資源的不同位置。

狀態(tài)更新: 在執(zhí)行某些操作(如更新或刪除)后,服務(wù)器可以使用 303 狀態(tài)碼引導(dǎo)客戶端查看更新后的狀態(tài)或結(jié)果。

示例

請(qǐng)求的 POST 請(qǐng)求示例:

  • POST /submit-form HTTP/1.1
  • Host: example.com
  • Content-Type: application/x-www-form-urlencoded
  • username=user&password=pass

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 303 See Other
  • Location: https://example.com/success
  • Content-Type: text/html

圖片?

關(guān)鍵要點(diǎn)
  • Location 頭 : 響應(yīng)中包含 Location 頭,指示新的 URI??蛻舳藨?yīng)使用 GET 方法請(qǐng)求該 URI。
  • HTTP 方法 : 303 狀態(tài)碼確??蛻舳嗽谥囟ㄏ蚝笫褂?GET 方法,而不是繼續(xù)使用原來(lái)的請(qǐng)求方法(如 POST)。

304 Not Modified: 客戶端的緩存版本是最新的,服務(wù)器沒有新內(nèi)容。

狀態(tài)碼304的含義:

HTTP 狀態(tài)碼 304 Not Modified 表示所請(qǐng)求的資源自上次請(qǐng)求以來(lái)沒有被修改。這通常與緩存機(jī)制相關(guān),用于指示客戶端可以使用其緩存的版本,而不需要重新下載資源。

使用場(chǎng)景 緩存優(yōu)化: 當(dāng)客戶端向服務(wù)器請(qǐng)求資源時(shí),它可能會(huì)發(fā)送一個(gè)條件請(qǐng)求,附帶 If-Modified-Since 或 If-None-Match 頭。如果資源在服務(wù)器上沒有被修改,服務(wù)器會(huì)返回 304 狀態(tài)碼,從而節(jié)省帶寬和提高加載速度。

減少延遲: 通過(guò)使用 304 狀態(tài)碼,服務(wù)器可以減少不必要的數(shù)據(jù)傳輸,提高性能。

示例

請(qǐng)求的 GET 請(qǐng)求示例:

  • GET /image.png HTTP/1.1
  • Host: example.com
  • If-Modified-Since: Wed, 21 Oct 2023 07:28:00 GMT

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 304 Not Modified
關(guān)鍵要點(diǎn)
  • 條件請(qǐng)求: 304 狀態(tài)碼通常與條件請(qǐng)求一起使用,客戶端會(huì)在請(qǐng)求中包含 If-Modified-Since 或 If-None-Match 頭。
  • 沒有消息體: 在響應(yīng)中,304 狀態(tài)碼通常不會(huì)包含消息體,因此不會(huì)傳輸任何資源數(shù)據(jù)。

305 Use Proxy: 請(qǐng)求的資源必須通過(guò)指定的代理訪問(wèn)。

狀態(tài)碼305的含義:

HTTP 狀態(tài)碼 305 Use Proxy 表示請(qǐng)求的資源必須通過(guò)指定的代理進(jìn)行訪問(wèn)。此狀態(tài)碼的使用并不常見,且在某些情況下可能會(huì)造成安全隱患,因此在現(xiàn)代 web 開發(fā)中很少被使用。

使用場(chǎng)景

代理需求: 當(dāng)服務(wù)器希望客戶端通過(guò)特定的代理服務(wù)器來(lái)訪問(wèn)請(qǐng)求的資源時(shí),可以使用 305 狀態(tài)碼。如果客戶端沒有配置該代理,則可能無(wú)法訪問(wèn)所請(qǐng)求的資源。 示例 請(qǐng)求的 GET 請(qǐng)求示例:

  • GET /resource HTTP/1.1
  • Host: example.com

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 305 Use Proxy
  • Location: http://proxy.example.com:8080/

在這個(gè)例子中,響應(yīng)中的 Location 頭指示客戶端應(yīng)該通過(guò) http://proxy.example.com:8080/ 這個(gè)代理來(lái)訪問(wèn)所請(qǐng)求的資源。

關(guān)鍵要點(diǎn)
  • 安全隱患: 由于 305 狀態(tài)碼可能會(huì)導(dǎo)致安全問(wèn)題(例如,惡意代理),很多瀏覽器和 HTTP 客戶端并不支持或忽略這一狀態(tài)碼。
  • 不常用: 這個(gè)狀態(tài)碼在實(shí)際應(yīng)用中并不常見,通常開發(fā)者會(huì)選擇其他方法來(lái)實(shí)現(xiàn)類似的功能。

307 Temporary Redirect: 請(qǐng)求的資源臨時(shí)移動(dòng)到新位置,客戶端應(yīng)使用原來(lái)的請(qǐng)求方法繼續(xù)請(qǐng)求。

狀態(tài)碼307的含義:

HTTP 狀態(tài)碼 307 Temporary Redirect 表示請(qǐng)求的資源臨時(shí)移動(dòng)到一個(gè)新的 URI。與 302 狀態(tài)碼類似,307 也用于臨時(shí)重定向,但有一個(gè)重要的區(qū)別:307 確??蛻舳嗽谥囟ㄏ驎r(shí)使用原始的 HTTP 方法。

使用場(chǎng)景

保持方法一致性: 當(dāng)客戶端發(fā)起一個(gè) POST 請(qǐng)求時(shí),如果服務(wù)器返回 307 狀態(tài)碼,客戶端在重定向到新 URI 時(shí)仍然使用 POST 方法。這在某些情況下非常重要,例如提交表單后需要臨時(shí)重定向到不同的頁(yè)面。

臨時(shí)重定向: 用于指示資源臨時(shí)移動(dòng)到新位置,適用于需要在短期內(nèi)更改資源位置的場(chǎng)景。

示例

請(qǐng)求的 POST 請(qǐng)求示例:

  • POST /submit-form HTTP/1.1
  • Host: example.com
  • Content-Type: application/x-www-form-urlencoded
  • data=value

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 307 Temporary Redirect
  • Location: http://example.com/thank-you

在這個(gè)例子中,客戶端會(huì)被告知資源臨時(shí)移動(dòng)到 http://example.com/thank-you,并且仍然會(huì)使用 POST 方法進(jìn)行請(qǐng)求。

關(guān)鍵要點(diǎn)
  • 方法保持: 與 302 狀態(tài)碼不同,307 狀態(tài)碼要求客戶端在重定向時(shí)保持原始的 HTTP 方法。
  • 臨時(shí)性: 307 狀態(tài)碼是臨時(shí)的,表示將來(lái)可能會(huì)恢復(fù)到原始 URI。

308 Permanent Redirect: 請(qǐng)求的資源永久移動(dòng)到新位置,客戶端應(yīng)使用原來(lái)的請(qǐng)求方法繼續(xù)請(qǐng)求。

狀態(tài)碼303的含義:

HTTP 狀態(tài)碼 308 Permanent Redirect 表示請(qǐng)求的資源已被永久移動(dòng)到一個(gè)新的 URI,并且客戶端在重定向時(shí)應(yīng)繼續(xù)使用原始的 HTTP 方法(例如,POST、PUT等)。

使用場(chǎng)景

方法保持: 與 301 狀態(tài)碼不同,308 確保在重定向時(shí)客戶端使用原始的 HTTP 方法。這對(duì)于某些操作(如文件上傳或表單提交)非常重要。

永久性重定向: 用于指示資源永久性地移動(dòng)到新的位置,適用于需要更新鏈接或資源地址的場(chǎng)景。

示例

請(qǐng)求的 POST 請(qǐng)求示例:

  • POST /old-endpoint HTTP/1.1
  • Host: example.com
  • Content-Type: application/json

{"key": "value"}

服務(wù)器響應(yīng)示例:

  • HTTP/1.1 308 Permanent Redirect
  • Location: http://example.com/new-endpoint

在這個(gè)例子中,客戶端會(huì)被告知資源永久移動(dòng)到 http://example.com/new-endpoint,并且在重定向時(shí)仍然使用 POST 方法進(jìn)行請(qǐng)求。

關(guān)鍵要點(diǎn)
  • 方法保持: 308 狀態(tài)碼確??蛻舳嗽谥囟ㄏ驎r(shí)保持原始的 HTTP 方法,這對(duì)于某些請(qǐng)求非常關(guān)鍵。
  • 永久性: 308 表示請(qǐng)求的資源已被永久移動(dòng),客戶端應(yīng)更新其鏈接。

?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5209

    文章

    20663

    瀏覽量

    337108
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2950

    文章

    48132

    瀏覽量

    418530
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    538

    瀏覽量

    35558
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言函數(shù)的返回值

    當(dāng)然,C語(yǔ)言程序員中還有一種“行業(yè)潛規(guī)則”。如果定義的函數(shù)是個(gè)布爾函數(shù),也即返回值顯式的使用類似于 bool 關(guān)鍵字定義,或者函數(shù)名類似于 is_true(),那么顯然此時(shí)應(yīng)該遵守C語(yǔ)言語(yǔ)法,使用“真”表示成功,“假”表示失
    發(fā)表于 08-31 10:11 ?3254次閱讀

    C語(yǔ)言中函數(shù)的返回值指向一個(gè)指針

    函數(shù)的返回值類型必須與函數(shù)體內(nèi)的返回表達(dá)式的類型相匹配。如果類型不匹配,編譯器會(huì)報(bào)錯(cuò)。此外,C 語(yǔ)言中的函數(shù)只能返回一個(gè),如果需要返回多個(gè)
    的頭像 發(fā)表于 04-26 11:01 ?4215次閱讀
    C語(yǔ)言中函數(shù)的<b class='flag-5'>返回值</b>指向一個(gè)指針

    檢查函數(shù)返回值的錯(cuò)誤和異常處理方法

    檢查函數(shù)返回值:這是最常見也最基本的錯(cuò)誤處理和異常處理方法,就是在調(diào)用一個(gè)函數(shù)后,檢查其返回值是否符合預(yù)期或是否表示出錯(cuò)或失敗。如果出錯(cuò)或失敗,則根據(jù)返回值或者全局變量errno(定義
    發(fā)表于 12-11 06:48

    main函數(shù)返回值的認(rèn)知

    退出,否則代表程序異常退出。在 C89(C語(yǔ)言的早期標(biāo)準(zhǔn))中,main() 是可以接受void返回值的。Brian W. Kernighan 和 Dennis M. Ritchie 的經(jīng)典巨著
    發(fā)表于 10-24 11:08

    關(guān)于返回值類型為void的函數(shù)的返回值

    我對(duì)C語(yǔ)言比較熟悉而嵌入式了解不多。今天和一個(gè)嵌入式開發(fā)討論C語(yǔ)言的時(shí)候遇到一個(gè)這樣的問(wèn)題。void f(){}對(duì)于一個(gè)返回值類型為void的函數(shù)我認(rèn)為這個(gè)函數(shù)是沒有返回值。而那個(gè)嵌入式開發(fā)卻認(rèn)為
    發(fā)表于 05-18 09:34

    利用函數(shù)參數(shù)和返回值提高嵌入式軟件質(zhì)量

    利用函數(shù)參數(shù)和返回值提高嵌入式軟件質(zhì)量  引 言   提高軟件代碼的質(zhì)量是每一個(gè)軟件設(shè)計(jì)者都必須考慮的問(wèn)題,這涉及軟件的有效性和經(jīng)濟(jì)價(jià)值?;谇?/div>
    發(fā)表于 11-07 09:48 ?1078次閱讀
    利用函數(shù)參數(shù)和<b class='flag-5'>返回值</b>提高嵌入式軟件質(zhì)量

    WebApi之接口返回值的四種類型

    Webapi的接口返回值主要有四種類型 void無(wú)返回值 IHttpActionResult HttpResponseMessage 自定義類型 void無(wú)返回值 大家都知道void聲明的是一個(gè)無(wú)
    發(fā)表于 11-27 14:52 ?1.6w次閱讀

    C語(yǔ)言程序開發(fā)中關(guān)于函數(shù)返回值的問(wèn)題

    C語(yǔ)言函數(shù)可以通過(guò)返回值表示輸出結(jié)果,例如 log() 函數(shù)的返回值會(huì)根據(jù)不同的輸入,返回不同的。再比如,我們定義一個(gè)函數(shù) myopen(),用于打開某個(gè)文件,那么,這個(gè)函數(shù)要么能夠
    發(fā)表于 09-06 10:01 ?1355次閱讀

    Rust代碼啟發(fā)之返回值異常錯(cuò)誤處理

    這樣的代碼,錯(cuò)誤處理代碼和業(yè)務(wù)邏輯交織在一起,也容易忽略處理錯(cuò)誤。以及把返回值只用于錯(cuò)誤返回,有點(diǎn)浪費(fèi)的感覺。因?yàn)楹芏鄷r(shí)候把計(jì)算結(jié)果作為返回值,更符合思考的邏輯。
    的頭像 發(fā)表于 09-22 09:24 ?2911次閱讀
    Rust代碼啟發(fā)之<b class='flag-5'>返回值</b><b class='flag-5'>異常</b>錯(cuò)誤處理

    return-函數(shù)的返回值是什么

    return關(guān)鍵字后接變量名或表達(dá)式可以將函數(shù)的計(jì)算結(jié)果返回到調(diào)用處。變量或表達(dá)式等同于接收果汁、豆?jié){的杯子。如果函數(shù)沒有返回值,return可以省略不寫。沒有返回值的意思是程序執(zhí)行完畢之后,不需要給調(diào)用函數(shù)處提供數(shù)據(jù)。
    的頭像 發(fā)表于 02-23 10:52 ?2928次閱讀
    return-函數(shù)的<b class='flag-5'>返回值</b>是什么

    什么是函數(shù)的返回值?

    函數(shù)的返回值是函數(shù)被調(diào)用后,執(zhí)行所調(diào)用函數(shù)內(nèi)代碼后所得出的結(jié)果,并且將返回給主函數(shù)的。
    的頭像 發(fā)表于 04-04 17:21 ?6737次閱讀

    Python函數(shù)作為返回值

    函數(shù)作為返回值 函數(shù)除了作為代碼塊,作為接收參數(shù),還可以把函數(shù)作為結(jié)果返回。 例子: 可變參數(shù)的求和: 通常 def calc_sum ( *args ): ax = 0 for n in args
    的頭像 發(fā)表于 09-27 17:01 ?1821次閱讀

    ARM異常返回值的合法有哪些?各返回值分別代表什么?

    ARM異常返回值的合法有哪些?各返回值分別代表什么? ARM異常返回值的合法
    的頭像 發(fā)表于 10-19 16:36 ?2006次閱讀

    一站式統(tǒng)一返回值封裝、異常處理、異常錯(cuò)誤碼解決方案—最強(qiáng)的Sping Boot接口優(yōu)雅響應(yīng)處理器

    1. 前言 統(tǒng)一返回值封裝、統(tǒng)一異常處理和異常錯(cuò)誤碼體系的意義在于提高代碼的可維護(hù)性和可讀性,使得代碼更加健壯和穩(wěn)定。統(tǒng)一返回值封裝可以避免每一個(gè)接口都需要手工拼裝響應(yīng)報(bào)文;統(tǒng)一
    的頭像 發(fā)表于 06-20 15:42 ?1499次閱讀

    HTTP相關(guān)返回值異常何解決(下篇)

    ?今天我們講講HTTP相關(guān)返回值異常何解決(實(shí)例持續(xù)更新中)一、4xx客戶端錯(cuò)誤狀態(tài)碼這些狀態(tài)碼表示請(qǐng)求有問(wèn)題,通常是由于客戶端的錯(cuò)誤引起
    的頭像 發(fā)表于 10-24 17:24 ?4735次閱讀
    <b class='flag-5'>HTTP</b><b class='flag-5'>相關(guān)</b><b class='flag-5'>返回值</b><b class='flag-5'>異常</b>如<b class='flag-5'>何解</b>決(下篇)