http协议

1、请求协议

2、get 请求

3、post 请求

4、响应协议


1、请求协议

请求首行;  # 请求方式 请求路径 协议和版本,例如:GET  /index.html  HTTP/1.1
请求头信息;# 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
空行;     # 用来与请求体分隔开
请求体。   # GET没有请求体,只有POST有请求体

2、get 请求

    HTTP默认的请求方法就是GET
        * 没有请求体
        * 数据必须在1K之内!
        * GET请求数据会暴露在浏览器的地址栏中

  • GET 127.0.0.1:8090/login HTTP/1.1:GET请求,请求服务器路径为 127.0.0.1:8090/login ,协议为1.1

  • Host: localhost:请求的主机名为localhost;

  • User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0:与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的;

  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8:告诉服务器,当前客户端可以接收的文档类型,其实这里包含了*/*,就表示什么都可以接收;

  • Accept-Language: zh-cn,zh;q=0.5:当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息;

  • Accept-Encoding: gzip, deflate:支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。

  • Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7:客户端支持的编码;

  • Connection: keep-alive:客户端支持的链接方式,保持一段时间链接,默认为3000ms;

  • Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送去过;这个

    Cookie的名字为JSESSIONID。

3、post 请求

    (1) 数据不会出现在地址栏中
    (2) 数据的大小没有上限
    (3) 有请求体
    (4) 请求体中如果存在中文,会使用URL编码!

  • Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;它可以用来做统计工作,也可以用来做防盗链。

  • Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前缀,后面跟随两位的16进制。

  显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性
  有关Content-Type属性值有如下两种编码类型:
   (1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
   (2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

  当提交为表单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。

  • Content-Length:13:请求体的长度,这里表示13个字节。

  • keyword=hello:请求体内容!hello是在表单中输入的数据,keyword是表单字段的名字。

4、响应协议

   响应首行;     HTTP协议版本号, 状态码, 状态消息
   响应头信息;
   空行;
   响应体 html页面

  • HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
  • Server:WSGIServer/0.2 CPython/3.5.2:服务器的版本信息;

  • Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8;

  • Content-Length: 724:响应体为724字节;

  • Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:响应给客户端的Cookie;

  • Date: Wed, 25 Sep 2012 04:15:03 GMT:响应的时间,这可能会有8小时的时区差;

  告诉浏览器不要缓存的响应头:

  • Expires: -1;

  • Cache-Control: no-cache;

  • Pragma: no-cache;

  自动刷新响应头,浏览器会在3秒之后请求http://www.baidu.com

  • Refresh: 3;url=http://www.baidu.com 

 HTML中指定响应头

在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,例如在index.html页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.com">,表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.baidu.com.

 

posted on 2018-05-15 15:49  蜗牛也是妞  阅读(169)  评论(0编辑  收藏  举报