代码改变世界

HTTP协议笔记

2013-11-14 20:51  hduhans  阅读(168)  评论(0)    收藏  举报

  超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

准备工作:IE抓包工具HttpWatch_Professional

1、Http协议格式及说明

   ① 发送请求

  Accept: *.*    --表示客户端可以接受任何数据

  Referer: http://localhost/test.html   --表示客户端的来源地址

  Accept-Language: zh-cn    --页面语言

  User-Agent: Mozilla/4.0   --客户端浏览器的内核和操作系统

  Accept-Encoding: gzip,deflate    --表示接收数据压缩格式的类型

  Host: localhost:80    --服务器主机及端口

  Conntention: Keep Alive    --表示连接不立即中断,是一个长连接

小技巧:apache服务器中使用php可以获取客户端发起请求的IP地址($_SERVER['REMOTE_ADDR']),并限制某些ip无法访问

  ② 响应请求

  HTTP/1.1 200 OK    --OK表示客户端请求成功

  Server: Microsoft-IIS/5.0   --显示服务器的情况

  Last-Modified: Sat,11 Sep 2013 20:40:10 GMT   --请求资源更新时间

  Date: Sat,16 Sep 2013 20:40:10 GMT   --显示客户端请求页面的时间

  Refersh: 3;url=http://www.baidu.com    --页面停留三秒后跳转至新页面

  Content-Length: 2291   --响应数据的大小

  Content-Type: text/html   --响应文档类型

  ---------------------------------------------------------------------------

  //联合禁用缓存 三个消息头共同作用

  Cache-control: no-cache   --禁用缓存

    Expires:-1    --禁用缓存

  Pramga: no-cache    --禁用缓存

  ---------------------------------------------------------------------------

注:① 响应状态码及代表含义

     1) 302  --服务器返回跳转新页面地址,伴随 Location:新页面地址

     2) 404  --找不到页面

     3) 304  --客户端发起请求时,请求数据包含If-Modified-Since,表示客户端已有对应数据缓存,服务断接受请求时,会自动完成 Last-Modified 和 If-Modified-Since 的比较,若相等,则返回304 Not Modified,告诉服务器资源版本与缓存一致,可直接使用缓存资源

  ② php禁用缓存。三个消息头联合使用,是因为各个浏览器禁用的方式可能不一致;

header("Expires:-1");
header("Cache-Control: no-cache");
header("Pramga: no-cache");

 

2、http协议请求方式

  ① GET - 请求获取由Request-URI所标识的资源

  ② POST - 在Request-URI所标识的资源后附加新的数据

  ③ HEAD - 请求获取由Request-URI所标识的资源的响应消息报头

  ④ OPTIONS - 请求查询服务器的性能,或查询与资源相关的选项和需求

  ⑤ PUT - 请求服务器存储一个资源,并用Request-URI作为其标识

  ⑥ DELETE - 请求服务器删除由Request-URI所标识的资源

  ⑦ TRACE - 请求服务器回送收到的请求信息,主要用语测试或诊断

注:① post和get请求的区别:

     1) 安全性上,post安全性大于get请求。post请求的数据放在消息数据中,而get请求的数据放在url中,容易暴露;

     2) 提交的数据大小上,http协议本身并没有限制数据大小,但get请求的数据最大为2k+35,而post请求的数据理论上没有限制;

       3) 从人性化考虑,get请求的url带有参数,容易加入收藏夹;