您的位置:首页 > 理论基础 > 计算机网络

一个原生的http url请求的全过程

2016-12-07 21:26 316 查看
无论是

1)通过JQuery的ajax方式,发起一个http url请求。

2)通过Firefox的HttpRequester插件(参数可以写入Content to Send、Headers、Parameters传递给后端),发起一个http url请求。

3)通过在浏览器地址栏,输入一个地址(http://127.0.0.1:8080/tesProject/user/modify?id=XXXXX),发起一个http url请求。

最原生的http url请求的过程是这样的,无论以上是哪一种http url请求,执行过程其实都是一样的:

通常情况下,HTTP协议的工作原理很好理解,用户通过客户端向服务端发起一个请求,创建一个TCP连接,指定端口号,默认是80,然后连接到服务器工作。在那个端口监听浏览器请求。一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回一个响应状态,比如"HTTP/1.0
404 OK",同时会返回特定的数据内容,如请求的资源,错误代码,其它状态信息等等。

 

HTTP协议的报文格式

 

HTTP协议的请求报文

 

当浏览器向服务器发送一个请求到Web服务器,它发送一个数据块,或请求信息,

 

HTTP请求信息包括3部分:

 

请求方法URI协议/版本;

 

请求头(Request Header);

 

请求正文;

 

下面是一个HTTP请求的示例:

 

GET/test.jsp HTTP/1.1

Accept:image/test.image/jpeg,*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:222.35.232.103

User-Agent:Mozila/5.0(compatible;MSIE5.01;Window NT5.0)

Accept-Encoding:gzip,deflate

username=linuxidc&password=linuxidc

 

(1)请求方法URI协议/版本

 

请求的第一行是“方法/内容URL协议/协议版本名称”:

 

GET/test.jsp HTTP/1.1

 

上面的代码中,“GET”说明请求方法,“/test.jsp”表示网络资源,中间空格,最后说明协议和协议的版本。

 

根据HTTP标准,HTTP请求可以使用多种不同的请求方法。例如:HTTP1.1允许支持七种请求方法(也叫“动作”):GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。日常开发中,GET和POST是最常用的方法,主要在相关的Web开发中。

 

URL路径指定了要访问的网络资源。一般来说,我们需要的是相对路径,因为确定资源位置,知道网络资源相对于服务器的根目录的路径就可以,所以以“/”开头。在头信息结束时,声明了通信过程中HTTP协议版本的使用版本。

 

需要注意,方法名称很重要的一点是严格区分大小写。有些时候,某个请求所针对的资源可能不支持对应的请求方法,会通过不同的状态码给出响应。例如,服务器将返回一个状态码405(方法不允许),当请求服务器或方法不理解不支持相应的时间,返回一个状态码501(没有实现)。

 

(2)请求头(Request Header)

 

请求头包含了一些客户环境和请求的内容信息。例如,请求头可以声明浏览器内核和语言使用,请求的长度等。

 

Accept:image/test.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:222.35.232.103

User-Agent:Mozila/5.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

 

(3)请求正文

 

请求正文和请求头要有空行。这个空行必须存在,说明结束请求头传输,开始传输正文请求。请求正文中一般包含很多信息,例如用户提交的用户名和密码之类的登陆信息:userlogin=linuxidc¤tpwd=linuxidc

 

在真实应用中,协议的请求正文可以包含大量的信息,而不是如示例的HTTP请

 

求中一样,请求正文只有简单的一行数据。

 

HTTP协议的响应报文

 

和请求报文类似,HTTP响应主要也是3个部分构成:

 

(1)协议状态版本代码描述

 

(2)响应头(Response Header)

 

(3)响应正文

 

下面是一个HTTP响应的示例:

 

HTTP/1.1 200 OK

Server:Apache Tomcat/7.0.1

Date:Mon,6Oct2014 13:23:42 GMT

Content-Length:102

<html>

<head>

<title>HTTP响应文件<title>

</head>

<body>

这是HTTP响应文件!

</body>

</html>

 

客户端向服务器发送请求,和请求报文类似,服务器会以状态行响应。

 

响应报文包括:HTTP协议的版本、结果编码以及其他的必要信息,如实体信息等。响应类别不同,响应报文里可以包含或者不含实体内容。

 

HTTP响应报文的首先是以状态行开始,这些可以参考示例的代码。

 

响应头也就是报文首部,和请求头首部一样,包含重要的信息,例子中我们可以看到,比如日期时间和服务器类型以及内容长度和数量等。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: