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回应会附带请求主体,该请求主体向客户端提供关于付款要求的附加资讯。该请求主体可以采用多种主体,包括HTML、XML或JSON,通常包含付款金额、接受的付款方式以及如何完成交易的说明等详细资讯。[5]
伺服器也可能在回应中包含相关标头,例如Retry-After,其指示客户端在完成付款流程后,重试请求之前应等待的时间长度。[5]
与其他状态码的关系
HTTP 402状态码不应与更常用的403 Forbidden状态码混淆。[6]虽然这两个状态码都表示对资源的存取受到限制,但区别在于限制的原因。402状态明确表示需要付费,而403状态码则表示由于其他原因(例如权限不足或身份验证失败)而禁止存取。
若伺服器要求付款,但还希望传达关于拒绝存取的额外资讯,通常会在回应403状态码的同时回应402状态码。这种组合有助于传达付款要求,同时向客户端提供更多背景资讯。[7]
参考资料
- ^ Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. 互联网工程任务组: sec. 6.5.2. RFC 7231(原出处存档于2023-08-15).
- ^ 2.0 2.1 402 Payment Required - HTTP Status code. http-statuscode.com. 2023-08-19 [2023-08-19]. (原始内容存档于2023-07-09).
- ^ 402 Payment Required - HTTP. mdn web docs. 2023-08-19 [2023-08-19]. (原始内容存档于2023-08-12).
- ^ Experimental. mdn web docs. 2023-08-19 [2023-08-19]. (原始内容存档于2023-08-20).
- ^ 5.0 5.1 Fielding, R., Gettys, J., Mogul, J., et al. (1999). "[rfc:2616 Hypertext Transfer Protocol -- HTTP/1.1]". RFC 2616. IETF.
- ^ Difference between http response status code 402 and 403. Stack Overflow. [2023-08-20]. (原始内容存档于2023-08-20) (英语).
- ^ The difference between HTTP status code 402 and 403. http-statuscode.com. 2023-07-19 [2023-08-19]. (原始内容存档于2023-07-20).