HTTP 402

本页使用了标题或全文手工转换
维基百科,自由的百科全书

HTTP 402,又稱“所需付款”(Payment Required),是超文本传输协议中的一個HTTP状态码。它是互联网工程任务组在RFC 7231[1]規範中定義的HTTP/1.1協定的一部分。

描述

HTTP 402狀態碼表示客戶端必須付費才能存取所請求的資源。[2]其通常用於伺服器在授予對內容或服務的存取權限之前要求付款的情況。此代碼用於提醒您需要進行財務交易或授權才能繼續。

範例

客戶端請求:

GET /index.php HTTP/1.1
Host: www.example.org

伺服器回應:[3]

HTTP/1.1 402 Payment Required
Location: https://www.example.org/index.asp

用途

HTTP 402狀態碼通常用於電子商務與以訂閱為基礎的系統,在這些系統中,在使用者完成付款前對內容或服務的存取受限。其可以應用於多種場景,例如:

  • 續訂:當使用者的訂閱方案到期,且他們嘗試存取付費內容時,伺服器可能會回應402狀態碼,以提醒使用者續訂。
  • 付費專區:要求使用者付費才能存取特定文章、新聞內容或進階功能的網站可以利用402狀態碼來指示需要付費才能繼續。[2]
  • 數位產品:銷售數位產品、軟體授權或數位媒體下載的線上平台可以使用402狀態代碼強制付款,然後再授予對所購買商品的存取權限。

實驗性

HTTP狀態碼402目前被歸類為HTTP協定內的實驗代碼。引入這類實驗代碼是為了評估新功能或想法並確定它們的實際應用。指定402狀態碼代表了必須付款才能獲得特定的資源或服務。但其暫定狀態代表較少被主流服務採用。建議網路開發者與機構遵守公認的HTTP規範並使用穩定、有完整文件的狀態碼。雖然402狀態碼可能會在一些實驗性功能中採用,但由於潛在的差異與相容性挑戰,建議謹慎使用。[4]

回應表示方式

HTTP402回應會附帶請求主體,該請求主體向客戶端提供關於付款要求的附加資訊。該請求主體可以採用多種主體,包括HTMLXMLJSON,通常包含付款金額、接受的付款方式以及如何完成交易的說明等詳細資訊。[5]

伺服器也可能在回應中包含相關標頭,例如Retry-After,其指示客戶端在完成付款流程後,重試請求之前應等待的時間長度。[5]

與其他狀態碼的關係

HTTP 402狀態碼不應與更常用的403 Forbidden狀態碼混淆。[6]雖然這兩個狀態碼都表示對資源的存取受到限制,但區別在於限制的原因。402狀態明確表示需要付費,而403狀態碼則表示由於其他原因(例如權限不足或身份驗證失敗)而禁止存取。

若伺服器要求付款,但還希望傳達關於拒絕存取的額外資訊,通常會在回應403狀態碼的同時回應402狀態碼。這種組合有助於傳達付款要求,同時向客戶端提供更多背景資訊。[7]

參考資料

  1. ^ Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. 互联网工程任务组: sec. 6.5.2. RFC 7231(原出处存档於2023-08-15). 
  2. ^ 2.0 2.1 402 Payment Required - HTTP Status code. http-statuscode.com. 2023-08-19 [2023-08-19]. (原始内容存档于2023-07-09). 
  3. ^ 402 Payment Required - HTTP. mdn web docs. 2023-08-19 [2023-08-19]. (原始内容存档于2023-08-12). 
  4. ^ Experimental. mdn web docs. 2023-08-19 [2023-08-19]. (原始内容存档于2023-08-20). 
  5. ^ 5.0 5.1 Fielding, R., Gettys, J., Mogul, J., et al. (1999). "[rfc:2616 Hypertext Transfer Protocol -- HTTP/1.1]". RFC 2616. IETF.
  6. ^ Difference between http response status code 402 and 403. Stack Overflow. [2023-08-20]. (原始内容存档于2023-08-20) (英语). 
  7. ^ The difference between HTTP status code 402 and 403. http-statuscode.com. 2023-07-19 [2023-08-19]. (原始内容存档于2023-07-20).