about HTTP


HTTP协议详解

重要性:

无论是以后用WebSevice,还是用rest做大型架构,都离不开对HTTP协议的认识。
甚至可以简化的说:

WebService = Http协议 + XML

Rest = Http协议 + XML/json实现的

各种的Api一般也是用Http + XML/json来实现的。

学习了HTTP协议之后也会方便Ajax的学习。

学习内容:

一、原理

  1. 形象理解Http协议
  2. 动手试试Http协议
  3. Http协议三部分介绍

二、实战

  1. PHP + socket编程发送http请求
  2. PHP批量发帖
  3. Http协议的防盗链

三、优化

  1. Http协议与缓存控制
  2. Http协议与Cookie
  3. 持久链接

学习内容:

一、原理

A. 形象理解Http协议

1) Http协议的定义:

计算机协议和现实的协议是一样的,双方多方都遵循这一个共同的规范,这就是协议。计算机可以全世界共通,这些协议功不可没。

HTTP协议就是按照一定的规则,向服务器索要数据/发送数据。服务器安照一定的规则进行回应。

2) Http协议的工作流程

1、原始状态下客户端与服务器没有连接;(连接就是虚拟电路)

2、建立链接发送请求到服务器;

3、服务器沿着建立的连接,返回响应信息。客户端收到响应,并进行解析;

4、断开连接。

3) Http请求信息和响应信息的格式
1、请求信息:
        请求行;
        请求头信息;
        (换行)
        请求主体信息(可无)

!!换行用来分开请求/响应头信息和请求/响应主体信息虽主体信息可有可无,但此空行一定要有。

请求行分为三部分:

请求方法、请求路径(URL)、所用的协议。

请求方法包括:GET POST HEAD PUT DELETE TRACE OPTIONS

请求路径就是URL的一部分

请求头信息格式:

KEY:VALUE
KEY:VALUE
………………
Contente-length:接下来的主体长度
Contente-type:接下来的主体类型


2、响应信息:
            响应行
            响应头信息
            (换行)
            响应主体信息

!!换行用来分开请求/响应头信息和请求/响应主体信息虽主体信息可有可无,但此空行一定要有。

响应主体信息可以是HTML或者其他内容

响应行分为三部分:

协议 状态码 状态文字信息
状态文字信息是像‘ok’这样

响应头信息格式:

KEY:VALUE
KEY:VALUE
………………
例如:HTTP/1.1 200 OK
Contente-type:text/html
Contente-length:5

4) 请求方法

GET POST HEAD PUT DELETE TRACE OPTIONS

(注意要大写

(注意:这些请求方法虽然Http协议里规定了,但可能有Web Service不支持这些方法。)

1、HEAD与GET方法基本一致,只是不返回内容
2、POST的请求方法
    因为POST比GET多了主体信息
    
    所以要在请求头信息里表明主体信息的长度content-length
    
    还要标明主体信息的类型content-type:application/x-www-form-urlencoded

GET和POST的区别在于GET请求没法传数据,只能单纯的读取一个接口提供的资源

而PSOT可以传输一定的数据到后台并进行一定的操作。

3、TRACE应用情况:

比如用了代理上网,想查看代理有没有修改Http请求,这种情况就可以用到TRACE,服务器回把最后收到的请求返回给客户端。

4、OPTIONS:

返回服务器可用的请求方法。

5) 状态码和状态文字

状态码用来反映服务器的响应情况

状态文字用来描述状态码的

常见的有:
200 OK:服务器正常返回网页
301/2:永久/临时重定向 (可能会在重定向过程中丢失数据,比如POST可能会变成GET导致数据丢失)
304 Not Modified:未修改(请求的内容未修改,告诉客户端到缓存里取
307 Temporay Redirect:在重定向中保持原有数据 
失败的状态码-
 404 NOT FOUND:请求的网页不存在
 500:服务器内部错误
 503:服务器暂时不可用
状态码 定义 说明
1XX    信息    收到请求,继续处理
2XX    成功    操作成功收到、理解、接受
3XX    重定向    为了完成请求,必需采取进一步措施
4XX    客户端错误    请求的语法有明显错误或不能完全被满足
5XX    服务端错误    服务器无法完成明显有效的请求

B. 动手试试Http协议
C. Http协议三部分介绍

二、实战
A. PHP + socket编程发送http请求
B. PHP批量发帖
C. Http协议的防盗链

三、优化
A. Http协议与缓存控制
B. Http协议与Cookie
C. 持久链接


文章作者: TOLIE
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 TOLIE !
  目录