返回结果的HTTP状态码——《图解http》第四章

  • HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。*

4.1状态码负责告知从服务器端返回的请求结果

状态码的类别:

类别 原因短语
1XX informational(信息性状态码) 接受的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

4.2 2XX成功

  1. 200 OK 正常处理
  2. 204 No Content 请求成功,但不返回资源
  3. 206 Partial Content 表示客户端进行了范围请求

4.3 3XX重定向

  1. 301 Moved Permanently 永久性重定向。
  2. 302 Found 临时性重定向
  3. 303 See Other 表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
  4. 307 Temporary Redirect 临时重定向。与302状态有着相同的含义。
  5. 304 Not Modified 表示服务器接收了附带条件的请求且条件未满足的情况

PS:条件请求

在进行条件请求时,客户端会提供给服务器一个If-Modified-Since请求头,其值为服务器上次返回的Last-Modified响应头中的日期值还会提供一个If-None-Match请求头,值为服务器上次返回的ETag响应头的值。服务器会读取到这两个请求头中的值,判断出客户端缓存的资源是否是最新的。

  1. 情况一:如果客户端缓存的资源是最新的话,服务器就会返回HTTP/304 Not Modified响应,但没有响应体.客户端收到304响应后,就会从缓存中读取对应的资源。
  2. 情况二:如果服务器认为客户端缓存的资源已经过期了,那么服务器就会返回HTTP/200 OK响应,响应体就是该资源当前最新的内容.客户端收到200响应后,就会用新的响应体覆盖掉旧的缓存资源。

4.4 4XX客户端错误

  1. 400 Bad Request 表示请求的报文中存在语法错误。
    浏览器会像200 OK那样对待该状态码。
  2. 401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。
  3. 403 Forbidden表示对请求资源的访问被服务器拒绝了。
  4. 404 Not Found表明服务器上无法找到请求的资源。也可以在服务器拒绝请求且不想说明原因的时候使用。

4.5 5XX服务器错误

  1. 500 Internal Server Error表明服务器再执行请求时发生错误,也可能是其他错误。
  2. 503 Service Unavailable表明服务器暂时处于超负载或者正在进行停机维护,现在无法处理请求。

PS: 不少返回的状态码响应都是错误的,但是用户可能察觉不到这点。比如Web应用程序内部发送错误,状态码依然返回200 OK,这种情况也经常遇到。

posted @ 2017-01-21 16:42  君寻不惑  阅读(196)  评论(0编辑  收藏  举报