百科问答小站 logo
百科问答小站 font logo



HTTP错误代码为什么跳过了402? 第1页

  

user avatar   dashu123 网友的相关建议: 
      

你还是太嫩了,孩子。
作为一只喵,大舒的朋友们都知道402是个啥。


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






版权声明:感谢评论区小恶魔的指正,本文中的图片原始来源是http.cat/






图片纯属搞笑,


写过http代码仅仅是个头,他的意思都是人赋予的,

纠正几个观点,

402和“当初制定出402的那帮人是怎么想的,为什么最后没有实现,将来到底有没有一天会实现”是没有关系的,402是http规定返回的代码,一定是由程序员来实现,而不是由指定的那帮人来实现。

并不是说payment required就一定要用402,而是说,返回值是402的原因是因为payment required。


程序员可以不实现402,可以花式实现402。你没付费,我可以不让你402,从逻辑上讲,我可以让你403 forbidden,我也可以给你一个302跳转到收费界面,我也可以给你一个200界面要求充值,这个并不冲突。如果只是个json接口,那么有些情况下他们甚至在json结构体内自行定义errorCode和errorMessage,接口外部全用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 )     

user avatar   zephix 网友的相关建议: 
      
       HTTP/1.1 402 Payment Required     

402 - 用户请求的内容要求付费,是一个非正式的错误编号

为什么没有正式把402加入标准之中?因为402错误没有太大的实用意义。

当用户请求了付费/会员内容时,相比返回一个“用户请求错误”,把访问者重定向到购买/会员开通页面无疑是更好的解决方法




  

相关话题

  为什么程序员大多成了感情的接盘侠,或者婚姻的接盘侠? 
  offer 中的期权到底有没有用? 
  自学 app 开发半年,找不到一个特别有创意的点来开发,现在很迷茫,怎么办? 
  如何看待越来越多的网红老师?有学识的老师真的会当网红吗? 
  2015 年美国最具发展潜力的社交应用是什么?2015 年社交互联网会如何发展? 
  互联网还有哪些红利机会,值得普通人从零开始去尝试? 
  市场监管总局称「互联网行业不是反垄断法外之地,所有企业都应严格遵守反垄断法律法规」,释放了什么信号? 
  如何评价百度外卖可能被出售? 
  有什么给视频加字幕最快的软件? 
  TIKTOK 首席执行官凯文·梅耶尔辞任,透露出哪些信息? 

前一个讨论
普法战争时德国攻克了法国首都,为什么没有直接吞并法国而是要法国赔钱?
下一个讨论
当初乌克兰、阿拉伯之春那些颜色革命的街头参与者现在看到自己的祖国变成这样会后悔吗?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利