Http Status Code In Rails

by 小赓赓。 at over 8 years ago, last updated at over 8 years ago
W

Http状态码用以表示网页服务器http响应状态的3位字符代码.

1xx系列(临时响应):

代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.如

100:(:continue)初始的请求已经接受,客户应当继续发送请求的其余部分.

2xx系列(成功):

代表请求已成功被服务器接收,理解,并接受如:

200(:ok):服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.

3xx系列(重定向):

这类状态码代表需要客户端采取进一步的操作才能完成请求.通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明.最好不要超过5次.如

300(:multiple_choices):针对请求,服务器可执行多种操作.客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出.如果服务器要提出优先选择,则应该在Location应答头指明.

301(:moved_permanently):请求的网页已永久移动到新位置.并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一.

304(:not_modified):如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 爬虫自从上次抓取后网页没有变更,进而节省带宽和开销.

4xx(请求错误)系列:

表示客户端的差错,如请求中有错误的语法或不能完成.这些状态码表示请求可能出错,妨碍了服务器的处理.如:

400(:bad_request):服务器不理解请求的语法.

401(:unauthorized):客户试图未经授权访问受密码保护的页面.

403(:forbidden):资源不可用.服务器理解客户的请求,但拒绝处理它.通常由于服务器上文件或目录的权限设置导致.

404(:not_found):服务器找不到请求的网页.例如,对于服务器上不存在的网页经常会返回此代码.

5xx系列(服务器错误)

这些状态码表示服务器在处理请求时发生内部错误.这些错误可能是服务器本身的错误,而不是请求出错.

500(:internal_server_error):服务器遇到了意料不到的情况,不能完成客户的请求.

502(:bad_gateway):服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答.

301 && 302

301和302都是请求的网页转移到新位置,但是301的请求是将网页永久的转向新的位置,从而永久的替换之前的位置.也就是告诉爬虫以后请求的位置就永久的改为此,之前的作废.而302的请求是临时性的,就是此次请求位置变动,但之后的请求仍为原来的位置,一些搜索引擎的爬虫会继续抓取原有位置并编制索引. 如:做好了一个网站,但现在感觉比如单品的界面的url比较乱,想采用更直观的"/user/product"的方式,这时我们的状态码就应该使用301,因为需要废弃之前的url,永久的告诉爬虫此页面url改为此.