标签存档: HTTP

Learn HTTP 1.1 Status Code Part.5

Learn HTTP 1.1 Status Code Part.5

by xujiwei(http://www.xujiwei.com/)

前一篇介绍了 4xx 系列状态码 中 406 到 417,这篇接着讲剩下的 5xx 系列。

7. 5xx 系列内部服务器错误

在 服务器处理请求时出问题了,服务器可以发一个 5xx 系列错误码给客户端,表示服务器在处理请求的时候出问题了,问题是出在服务器身上而不是客户端身 上。另外,服务器如果发送了 5xx 系列的状态码,除非客户端是使用的 HEAD 方法,否则服务器还应该在响应中给出错误的描述、原因以及解决方法 等,客户端可以把这些东西给用户看,让用户知道是什么原因导致了请求出错。

不过通常情况下,用户在收到 5xx 系列错误码的同时,是不会 收到导致错误的详细技术信息的,这是为了保护服务端程序安全的需要。服务器一般会返回一个页面描述所出的错误是由什么原因引起的,而不涉及详细技术信息。 例如在 ASP.NET 中,可以在 web.config 中的 customErrors 节配置自定义错误的显示方式,有 On、Off、 RemoteOnly 三种方式,可以根据具体的需要来设置,像 RemoteOnly 就会给本地开发者显示详细的错误信息以及调试信息,而对远程访问 者则会只显示服务器运行时出现错误,没有详细的调试信息。…

阅读全文 »

Learn HTTP 1.1 Status Code Part.4

Learn HTTP 1.1 Status Code Part.4

by xujiwei(http://www.xujiwei.com/)

前一篇介绍了 4xx 系列状态码 中 400 到 405,这篇接着讲剩下的 4xx 系列。

6.7. 406 Not Acceptable

客 户端在收到 406 Not Acceptable 状态码时,一般是因为服务器在处理客户端请求时,找不到对应客户端发送过来的请求头部 的 Accept 字段中列举的响应类型的响应内容,例如使用 Ajax 时,如果通信数据格式选择 json,发送请求时头部 Accept 字段一般 会设置为 application/json,但是如果服务端并不支持 json,那么服务端可以发送一个 406 Not Acceptable,同时 也应该在 Content-Type 字段中指定客户端所请求的资源的格式,这时客户端可以考虑使用另外的格式来接收响应。

不过备注中说 到,如果没有合适的资源来响应客户端的请求,HTTP 1.1 …

阅读全文 »

Learn HTTP 1.1 Status Code Part. 3

Learn 1.1 HTTP Status Code Part.3

by xujiwei(http://www.xujiwei.com/)

前一篇介绍了 3xx 系列状态码,这一篇介绍 4xx 客户端错误系列。

6. 客户端错误 4xx 系列状态码

4xx 系列状态码可以算是对用户来说相当熟悉的一类状态码,这个系列的状态码通常都会带一段描述信息来描述服务端在处理请求时出现了什么状况,用户能直观地看到服务端返回的信息,而不像 3xx 系列,浏览器会自动处理那些个状态码,不需要用户的参与。

但是 4xx 系列状态码之间的区别只是它所代表的意义不同,它们的表现形式是可以随心所欲的,例如一些著名站点的 404 页面都是精心设计过的。

6.1. 400 Bad Request

请求格式错误,这可能存在于客户端构造的 HTTP 头不符合要求等,这时服务端会返回一个 400 Bad Request,而客户端在不修改请求数据的情况,不可以再次发送这个请求。

6.2. 401 Unauthorized

未授权错误,用于 HTTP 认证。如果客户端请求的资源需要认证,那么服务端可以响应一个 401 Unauthorized,同时在头部添加一个 WWW-Authenticate 字段表示认证方式,客户端在收到 401 



阅读全文 »

Learn HTTP 1.1 Status Code Part.2

Learn HTTP 1.1 Status Code Part.2

by xujiwei(http://www.xujiwei.com/)

前一篇介绍了 2xx 系列状态码,这一篇介绍 3xx 重定向系列。

5 重定向 3xx 系列状态码

3xx 系列状态码一般是用来作为重定向的,并且在重定向的过程中,一般不需要用户的参与,也就是说,重定向的过程是由浏览器来控制的。但是如果重定向后的请求的方法不是 GET 或 HEAD 的话,还是需要用户参与的,不过也许仅仅是确认一下是否同意发送数据而已:)

另外,开发者要注意的是,RFC2616 Section 10.3 的备注中提到了在前一版本的 HTTP 协议中建议最大重定向次数为 5 次,也就是说,客户端可能只跟踪 5 次重定向,如果超过 5 次重定向,那么可能客户端就会把第 5 次重定向后得到的结果做为最终结果。这时,客户端得到的可能就是一个错误的结果,这就是开发者不愿看到的,那么在开发时,就应该尽量控制重定向次数在 5 次以内。

5.1  300 Multiple Choices

300 Multiple Choices,字面意思是多重选择,表示请求的这个地址具有多个资源可以响应。客户端在遇到 



阅读全文 »

Learn HTTP 1.1 Status Code Part.1

Learn HTTP Status Code Part.1

by xujiwei(http://www.xujiwei.com/)

1. 前言

HTTP 状态码在 Web 开发中是相当重要的一部分,掌握了 HTTP 的运用,可以在网站速度、性能等等的优化上有迹可循。当前,掌握 HTTP 状态码也可以为进一步加深对 HTTP 协议的理解打下基础。

以前,我所熟知的 HTTP 状态码仅限于 200、404、302 等几个,但是在一次与 smallshell 聊天的过程中,谈到了 HTTP 状态码,让我对剩余许多我并不熟知的 HTTP 状态码起了兴趣。不过在这之后的一段时间里都比较忙,因此这个想写的这个系列就一直拖着,这几天算是稍微清闲下来了,准备好好学习了一下 HTTP 状态码。

嗯,我也是在学习的过程中,所以,如果我写的有什么不对,欢迎指正,留言或 email(vipxjw at 163 dot com) 均可:)

2. 准备

本文基于 RFC2616 第10节 Status Code Definitions 而写,如果对本文有不明白的地方,可以参考完整的 



阅读全文 »