带新手走进神秘的HTTP协议(2)

方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。

HTTP 请求报文的一些方法 

带新手走进神秘的HTTP协议

2.URL

“URL”是所请求的资源的 URL。

3.版本

“版本”是 HTTP 的版本。

4.一个请求报文的例子:

 

带新手走进神秘的HTTP协议

6.2 响应报文

带新手走进神秘的HTTP协议

响应报文的开始行是状态行。

状态行包括三项内容,即 HTTP 的版本状态码,以及解释状态码的简单短语

状态码都是三位数字 :

1xx 表示通知信息的,如请求收到了或正在进行处理。

2xx 表示成功,如接受或知道了。

3xx 表示重定向,表示要完成请求还必须采取进一步的行动。

4xx 表示客户的差错,如请求中有错误的语法或不能完成。

5xx 表示服务器的差错,如服务器失效无法完成请求。 

一个响应报文的例子:

带新手走进神秘的HTTP协议

6.3 使用WireShark实例分析

下面是一个用wireShark获取的http协议包:

带新手走进神秘的HTTP协议

可以看到这是post方法、url:/pcsuiteprofile/api/updateinfo?u=38e37ccd&len=24

版本:HTTP/1.1  \r\n:回车换行

首部字段:Host、Accept、Content-Type、Content-Length等等。

展开Post,具体分析,如图:

带新手走进神秘的HTTP协议

选中post,下边的16进制中显示的是:50 4f 53 54正好是POST四个字母对应的16进制ASCII,可以自行去对比ASCII。

如果你不会用wireShark,可以看下这篇文章:,只看一就够用了。

 七、使用 Cookie 的状态管理

HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务 器上的记录,最后得到之前的状态信息。
  1. 没有 Cookie 信信息状态下的请求 

带新手走进神秘的HTTP协议

上图展示了发生 Cookie 交互的情景,HTTP 请求报文和响应报文的内容如下。

1. 请求报文(没有 Cookie 信息的状态)

 

1

2

3

 

GET/reader/HTTP/1.1

Host:hackr.jp

*首部字段内没有Cookie的相关信息

 

2. 响应报文(服务器端生成 Cookie 信息) 

1

2

3

4

5

 

HTTP/1.1200OK

Date:Thu,12Jul201207:12:20GMT

Server:Apache

<Set-Cookie:sid=1342077140226724;path=/;expires=Wed,10-Oct-1207:12:20GMT>

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

 

3. 请求报文(自动发送保存着的 Cookie 信息)

 

1

2

3

 

GET/image/HTTP/1.1

Host:hackr.jp

Cookie:sid=1342077140226724

 

有关请求报文和响应报文内Cookie 对应的首部字段,请参考之后的章节。

八、特点

HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13954.html