HTTP 402

HTTP回應狀態碼

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).