HTTP 状态码 400 VS 422
这里记录下 HTTP 状态码 400 与 422 区别。
规范
400 写入了 HTTP/1.1 规范(RFC 2616),422 是在 WebDAV(基于Web的分布式编写和版本控制) 引入的扩展,只有当服务端支持 WebDAV 扩展时,才能选择向客户端返回 422。而一旦支持 422 意味着也应该支持该扩展定义的其他状态码。
区别
HTTP/1.1 规范能够描述足够多的情况,但仍然不够完备。
400 主要是明显的客户端错误以至于服务端不能理解请求从而导致无法处理,包括请求语法格式错误,请求实体过大、欺骗性路由等。
422 则表现为请求格式错误,但出现了语义错误,以至于服务端无法响应。可以理解为服务端能理解请求资源类型 content-type,否则应该返回 415(Unsupported Media Type),也能理解请求实体内容,否则应该返回 400(Bad Request)。
Case
通过访问 https://source.unsplash.com/random/640x320 我们能获取指定尺寸的随机图片,当指定宽度或高度为 0 时,服务端返回了 422,可以理解为高度或宽度为0的图片在“语义”上不构成一个平面图形。
结论
如果服务端支持 WebDAV 扩展,可以在某些场合使用 422 代替 400,否则使用 400 也是没问题的。
参考
关于API参数错误状态码422
400 vs 422 response to POST of data
HTTP 503 错误 – 服务不可用 (Service unavailable)
介绍
因暂时超载或临时维护,您的 Web 服务器目前无法处理 HTTP 请求。 其含义是, 这是一个暂时情况,会有一些延误, 过后将会得到缓解。 有些服务器在这种情况下也许干脆拒绝套接字(socket)连接,在这种情况下,可能会由于套接字建立超时而产生不同的错误信息。
HTTP 循环中的 503 错误
任何客户端 ( 例如您的浏览器或我们的 CheckUpDown 机器人 ) 在和您的网络服务器通讯时,都需经过以下循环:
从您站点的IP 名称 ( 即您的网页地址 - URL, 不带起始的 ‘http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP名称向 IP 地址转换的对应关系 ) 由域名服务器 (DNSs) 提供。
打开一个IP socket ( 套接字 ) 连接到该 IP 地址。
通过该socket 写 HTTP 数据流。
从您的网络服务器接受响应的 HTTP 数据流。该数据流包括状态编码, 其值取决于 HTTP 协议 。 解析 该数据流得到 状态编码和其他有用信息。
该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为 ‘503’ 时。
解决 503 错误
您的 Web 服务器实际上处于“关闭维修”状态。 它仍然在最低限度地运行, 因为它至少可以响应 503 状态码,但全面服务是不可能的, 即您的网站不可用。 可能的原因有很多, 但一般来说, 是由于您的 Web 服务器操作员的人为干预。通常您就应知道有人正在努力解决此问题,正常服务将被尽快恢复。
请和您网站的系统操作员联系(例如您的互联网服务供应商 - ISP),以确定为什么服务停止了。和我们比起来,他们将能更好地帮您解决这类错误。
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h63494.shtml