天天看點

第4章 傳回結果的HTTP狀态碼 HTTP協定常用的狀态碼

状态码告知从服务端返回来的请求结果

1.状态码种类

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

2. 2XX 成功

2XX 的响应结果表示客户端的请求被服务端正常处理了。
  • 200

    OK

    , 客户端发出的请求被服务端正常处理了。

    (HEAD请求成功也会返回200)

  • 204

    Not Content

    ,客户端发出的请求被服务端正常处理了,但是报文中并没有返回实体的主体部分,也不允许返回任何实体的主体。
  • 206

    Partial Content

    ,客户端发出的范围请求被服务端正常处理。响应报文中包含请求头部

    Range

    字段中指定的部分。

3. 3XX 重定向

3XX 的响应结果表示浏览器需要作出某些处理来以正确的处理请求
  • 301

    Move Permanently

    永久重定向,该状态码表示请求的 URI 资源已被分配了新的URI,以后都应该使用资源现在所指的URI。如果资源对应的URI被存为了书签,这时应该按照头部字段 Location 重新保存URI。
HTTP/1.1  Moved Permanently
Server: nginx
Date: Tue, 21 Mar 2017 03:28:23 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: https://xx.com.bd/
X-Powered-By: EasyEngine 3.7.4

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

           
  • 302

    Found

    临时重定向,该状态码表示请求的资源已经分配了一个新的URI,希望用户可以访问新URI。

    与301代码相似,但是302代表的意思是这次分配是临时性的,之后还可能将这个资源分配为其他URI,如果用户将此URI存为书签,那么客户端不会根据头部字段Location中的值更新书签,而是仍然保留返回302状态码的页面对应的URI。

HTTP/1.1  Found
Content-Type: text/html; charset=iso-8859-1
Content-Length: 208
Connection: close
Date: Tue, 21 Mar 2017 03:34:42 GMT
Server: Apache
Location: http://www.xxx.com

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.xxx.com">here</a>.</p>
</body></html>

           
  • 303

    See Other

    该状态码表示由于被请求的资源还有另一个URI,应使用GET方法定向获取此资源。
GET / HTTP/1.1
Host: 123.234.345.456
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Connection: close


           

这次请求的意思是,以GET方法访问

123.234.345.456

HTTP/1.1  See Other
Date: Tue, 21 Mar 2017 03:39:10 GMT
Server: Apache
Location: http://www.xxx.com
Content-Length: 300
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>303 See Other</title>
</head><body>
<h1>See Other</h1>
<p>The answer to your request is located <a href="http://www.xxx.com">here</a>.</p>
<hr>
<address>Apache Server at 123.234.345.456 Port 80</address>
</body></html>

           

这段响应报文的意思是,

http://www.xxx.com

也可以访问到

123.234.345.456

所访问的资源,请你访问

http://www.xxx.com

这个URI吧!

  • 304

    Unmodified

附加条件是指报文中含有

If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Sine、If-Range

中任一头部。

该状态码表示客户端在发送携带附加条件的报文时,服务端允许请求资源但未符合条件的情况

3. 4XX 客户端错误

4XX 响应结果表示错误是在客户端发生的。
  • 400

    Bad Request

    该状态码表示客户端发送的请求报文中有语法错误,需修改后再次请求。
  • 401

    Unauthorized

    该状态码表示客户端发送的请求需要有通过HTTP认证的认证信息,若之前已经请求过一次则表示认证失败。

    返回含有 401 的响应必须包含一个用于被请求资源的

    WWW-Authenticate

    头部以认证(

    Challeneg

    )用户信息。当浏览器初次收到401响应会弹出用于认证的对话框。
  • 403

    Forbidden

    该状态码表示服务端拒绝客户端请求的资源。服务端没有必要返回拒绝的详细信息,若要返回在响应报文的主体中描述即可。
  • 404

    Not Found

    该状态码表示服务端没有客户端请求的资源,也可在服务端拒绝客户端请求的资源并不想给出任何拒绝信息时使用。

4. 5XX 服务端错误

5XX 的响应结果表示错误是在服务端发生的。
  • 500

    Internal Server Error

    该状态码表示服务端在处理请求时发生错误,也可能是Web应用存在bug或临时性服务器故障。
  • 503

    Service Unavailable

    该状态码表示服务端暂时处于超负荷或者正在进行停机维护,现在无法请求。如果知道解除上述状况的时间,可以加入头部字段Retry-After在返回给客户端。
终于写完了,这篇博文谷歌浏览器崩溃了不下5次,而我又没有保存的习惯,心里苦。QAQ

繼續閱讀