HTTP錯誤代碼為什麼跳過了402?

400 請求出錯

401 未授權:登錄失敗

403 禁止:禁止執行訪問

404 找不到

405 不允許此方法

406 不可接受

407 需要代理身份驗證

所以402哪裡去了?為什麼要跳過402?有什麼歷史典故嗎?


你還是太嫩了,孩子。

作為一隻喵,大舒的朋友們都知道402是個啥。

喔,現在大舒不是喵了,是熊喵。

版權聲明:感謝評論區小惡魔的指正,本文中的圖片原始來源是https://http.cat/。

圖片純屬搞笑,

寫過http代碼僅僅是個頭,他的意思都是人賦予的,

糾正幾個觀點,

402和「當初制定出402的那幫人是怎麼想的,為什麼最後沒有實現,將來到底有沒有一天會實現」是沒有關係的,402是業務邏輯返回的代碼,一定是由程序員來實現,而不是由指定的那幫人來實現。

並不是說payment required就一定要用402,而是402的一般是payment required。

程序員可以不實現402,可以花式實現402。你沒付費,我可以不讓你402,從邏輯上講,我可以讓你403 forbidden,我也可以給你一個302跳轉,我也可以給你一個200界面要求充值,這個並不衝突。

敲黑板,相比於402,我們更需要關注5XX錯誤代碼。

下面是乾貨:

(來源:go包源碼,提供了RFC出處)

// HTTP status codes, defined in RFC 2616.
const (
StatusContinue = 100
StatusSwitchingProtocols = 101

StatusOK = 200
StatusCreated = 201
StatusAccepted = 202
StatusNonAuthoritativeInfo = 203
StatusNoContent = 204
StatusResetContent = 205
StatusPartialContent = 206

StatusMultipleChoices = 300
StatusMovedPermanently = 301
StatusFound = 302
StatusSeeOther = 303
StatusNotModified = 304
StatusUseProxy = 305
StatusTemporaryRedirect = 307

StatusBadRequest = 400
StatusUnauthorized = 401
StatusPaymentRequired = 402
StatusForbidden = 403
StatusNotFound = 404
StatusMethodNotAllowed = 405
StatusNotAcceptable = 406
StatusProxyAuthRequired = 407
StatusRequestTimeout = 408
StatusConflict = 409
StatusGone = 410
StatusLengthRequired = 411
StatusPreconditionFailed = 412
StatusRequestEntityTooLarge = 413
StatusRequestURITooLong = 414
StatusUnsupportedMediaType = 415
StatusRequestedRangeNotSatisfiable = 416
StatusExpectationFailed = 417
StatusTeapot = 418

StatusInternalServerError = 500
StatusNotImplemented = 501
StatusBadGateway = 502
StatusServiceUnavailable = 503
StatusGatewayTimeout = 504
StatusHTTPVersionNotSupported = 505

// New HTTP status codes from RFC 6585. Not exported yet in Go 1.1.
// See discussion at https://codereview.appspot.com/7678043/
statusPreconditionRequired = 428
statusTooManyRequests = 429
statusRequestHeaderFieldsTooLarge = 431
statusNetworkAuthenticationRequired = 511
)


我覺得這個問題提得很好啊,當初制定出402的那幫人是怎麼想的,為什麼最後沒有實現,將來到底有沒有一天會實現,如果沒希望實現那當初那幫人究竟是怎麼想的。


List of HTTP status codes 4開頭的是client error

402是預留的類似比特幣之類的支付錯誤編碼

沒有跳過 只是不常見


http://www.ietf.org/rfc/rfc2616.txt

題主你自己看這個RFC吧,裡面的section 10.4.3


HTTP402

付款要求

當前未在 HTTP 協議中實現。

來源:https://msdn.microsoft.com/zh-cn/library/windows/apps/dn423949(v=vs.85).aspx


保留值~也不一定會是payment Require


推薦閱讀:

iPhone時間調到1970年1月1日0:00就不能再正常開機使用是為什麼?
如何評價管易ERP軟體?
專業的雜誌排版設計一般都是用什麼什麼軟體?

TAG:互聯網 | 軟體 | 程序員 | 伺服器 | HTTP |