你知道404 Not Found吗?

作用的过程

当你在浏览器上的地址栏输入网址http://kids.codepku.com,按回车键,就可以访问到编程少年网站。这整个过程是由URL定位编程少年这个网站,然后服务器通过HTTP协议将网站上的资源传送到浏览器,用户按回车键后就访问到了网站,也就是获得了资源。网址在专业术语上称为URL,是Uniform Resource Locator(统一资源定位符)的缩写,用来定位网络上的网页、图片、文字等的资源。我们知道,一个网址通常是以http开头的,这个http定义的是网络资源的传送方式,称为HTTP协议。HTTP协议是HyperText Transfer Protocol(超文本传输协议)的缩写,是互联网上应用最为广泛的一种网络协议,采用了请求/响应模型来定义客户端如何从服务器请求Web页面,以及服务器如何把Web页面传送给客户端,客户端是指我们电脑上的浏览器。

 2964446-5a35e17f298a48e1

 

HTTP协议过程包括4个步骤。

(1)建立连接:客户端的浏览器向服务端发出建立连接的请求,服务端给出响应就可以建立连接了。

(2)发送请求:客户端按照协议的要求通过连接向服务端发送自己的请求。

(3)给出应答:服务端按照客户端的要求给出应答,把结果(HTML文件)返回给客户端。

(4)关闭连接:客户端接到应答后关闭连接。

这个过程可以理解为,浏览器通过URL的定位知道了自己要的是什么,然后向服务器说我要一个东西,服务器接收到浏览器的要求,开始查找它想要的东西,找到之后回答说我找到这个东西了(有时可能找不到或者出现其他错误),然后把这个东西拿给浏览器,这时你就在浏览器上看到了相应的网页。

 

发送请求Request

发送请求的格式包括四个部分:请求行(request line)、请求头部(header)、空行和请求数据。

 2012072810301161


实例:

GET /hello.htm HTTP/1.1 

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) 

Host: example.com 

Accept-Language: en-us 

Accept-Encoding: gzip, deflate

本实例中请求数据为空,也就是说,除第一行外都是请求头部的部分。

  • 请求行以一个请求方法开头,然后空格分开,后面跟着请求的URL和HTTP协议的版本

GET /hello.html HTTP/1.1 

实例说明:请求方法为GET,定位的资源符是/hello.html,协议的版本是1.1版。

请求方法是用于定义操作资源的方式,HTTP/1.1 协议中定义了八种请求方法:

GET:读取资源数据

POST:新建资源数据

PUT:更新资源数据

DELETE:删除资源数据

HEAD:读取资源的元数据

OPTIONS:读取该资源所支持的所有请求方法

TRACE:回显服务器收到的请求,主要用于测试或诊断

CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

  • 请求头部用来说明服务器要使用的附加信息、传递客户端的更多信息,以及传递解析请求数据的必要信息

  • 空行,用来说明请求头部的结束和请求数据的开始。

  • 请求数据,是发送请求的主体,承载数据,是可选的。

给出应答(响应消息Response)

HTTP响应由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

httpmessage

 

实例:

HTTP/1.1 200 OK

Date: Fri, 22 May 2009 06:07:21 GMT

Content-Type: text/html; charset=UTF-8

<html>

      <head></head>

      <body>

            <!--body goes here-->

      </body>
</html>

  • 第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成

    第一行为状态行,HTTP/1.1表明HTTP版本为1.1版本,状态码为200,状态消息为ok。

    常见的状态码:

    200 OK                                    //客户端请求成功

    400 Bad Request                     //客户端请求有语法错误,不能被服务器所理解

    401 Unauthorized                   //请求未经授权

    403 Forbidden                        //服务器收到请求,但是拒绝提供服务

    404 Not Found                       //请求资源不存在,比如输入了错误的URL

    500 Internal Server Error        //服务器发生不可预期的错误

    503 Server Unavailable          //服务器当前不能处理客户端的请求,一段时间后可能恢复正常 

    比如,当我们输错网址时就会看到404 Not Found的页面:

timg (16) 


  • 第二部分:消息报头,用来说明客户端要使用的一些附加信息

    第二行和第三行为消息报头,Date:生成响应的日期和时间;

    Content-Type:指定了消息内容的类型为HTML(text/html),编码类型是UTF-8

  • 第三部分:空行,消息报头后面的空行是必须的

  • 第四部分:响应正文,服务器返回给客户端的文本信息

    空行后面的html部分为响应正文。


登录或注册后发布评论