第二章 Cookie及http协议

一,HTTP

1.基本概念

        http协议(Hypertext Transfer Protocol,超文本传输协议)

        所谓协议,其实就是 一种规范,http协议就是客户端与服务器"对话"的一种规范。

        另一种方式说就是浏览器向服务器发送请求,服务器作出响应的一种规范。

        http在通讯协议中运行在TCP上

2,TCP/IP:

       IP/IP是一种网络通信协议 ,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。

        TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层

        4层结构决定了客户端如何才能将一个请求发送到服务器,它们有一套严谨的工作流程。

    每层模型的职责:

            链路层:对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据;

            网络层:定义IP地址,确认主机所在的网络位置,并通过IP进行MAC寻址,对外网数据包进行路由转发;

            传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;

            应用层:定义数据格式,并按照对应的格式解读数据。

    应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、SMTP 等,HTTP 是一种比较常用的应用层协议,主要用于B/S架构之间的数据通信

第二章 Cookie及http协议_第1张图片

3.HTTP工作原理:

    HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

(1)客户端与服务器建立连接;

(2)客户端向服务器提出请求;

(3)服务器接受请求,并根据请求返回相应的文件作为应答;

(4)客户端与服务器关闭连接。

        HTTP规范定义了7种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

        HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。但是,随着Internet的各种服务系统的发展,建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的一些信息;论坛作为 Internet发展的产物之一,在 Internet 中发挥着越来越重要的作用,是用户获取、交流、传递信息的主要场所之一,论坛常常也需要记录访问者的一些基本信息(如身份识别号码、密码、用户在 Web 站点购物的方式或用户访问该站点的次数)。目前公认的是,通过 Cookie 和 Session 技术来实现记录访问者的一些基本信息。

HTTP工作过程      

     一次HTTP操作称为一个事务,其工作整个过程如下:

     1 ) 、地址解析,

如用客户端浏览器请求这个页面:http://localhost:80/index.html

从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:

协议名:http

主机名:localhost.com

端口:80

对象路径:/index.htm

      在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。

2)、封装HTTP请求数据包

     把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

3)封装成TCP包,建立TCP连接(TCP的三次握手)

       在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80,可以修改

     4)客户机发送请求命令

       建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI:Uniform Resource Identifier)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

     5)服务器响应

     服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

        实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

     6)服务器关闭TCP连接

     一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

    Connection:keep-alive

   TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

二,Cookie

cookie的概念:

        cookie是一种浏览器缓存技术  又称会话跟踪技术

        会话:用户进行网站,开启浏览器到关闭浏览器的过程称为一次会话

        会话跟踪技术:浏览器(客户端)和向服务器之间进行多次请求数据的时,实现数据共享的过程,就是会话跟踪

cookie的特点

        1.cookie是保存在电脑硬盘上的一个文件,内容是一个字符串

        2.Cookie是面向路径的。缺省路径 (path) 属性时,Web 服务器页会自动传递当前路径给浏览器,指定路径强制服务器使用设置的路径

        3.在一个目录页面里设置的 Cookie 在另一个目录的页面里是看不到的 

        4.cookie存储数据不安全

        5.cookie存储数据不能超过4kb 最多不能超过50条

            IE6及更低版本限制每个域名最多20个cookie。

            IE7和之后版本每个域名最多50个。IE7最初是支持每个域名最大20个cookie,之后被微软的一个补丁所更新。

            Firefox限制每个域最多50个cookie。

            Opera限制每个域最多30个cookie。

            Safari和Chrome对于每个域的cookie数量限制没有硬性规定。

        6.客户端用户如果设置禁止 Cookie,则 Cookie 不能建立

cookie的使用

1.设置cookie

设置语法:document.cookie = "name=value;expires=evalue; path=pvalue; domain=dvalue; secure;"

语法解析:

       1-1. name=value:为必须设置的内容,其它的可以不设置

        name为该条cookie信息的名称,value是对应的值。

        document.cookie = "uname=tom";//设置一条cookie信息 name=value的方式设置

        注:如果设置了另一条uname的cookie,会将原来的同名(同一访问路径设置)的cookie信息全部覆盖。如:

        document.cookie = "uname=jerry";

       1-2. expires设置有信息有效时间,如果没有设置,浏览器会话结束后会自动清除该条信息

          var date = new Date();//获取当前时间 

        date.setDate(date.getDate() + 10);//设置10天后的时间

         document.cookie = "uname=tom;expires=" + date;//cookie设置有效期 

        1-3.path设置访问路径,默认是只能在同一目录下访问,其它目录不能访问该目录下的这条信息,如果要让其它目录下也能访问该条信息,可以将其设置为根路径。

document.cookie = "uname=tom;expires=" + date + ";path=/";//设置cookie的访问路径为根路径,其它目录下也可以访问该条信息

        1-4.domain设置域名,限制设置的域可以访问该信息,如果没有设置,默认为当前域名可以访问

        1-5.secure规定通过https安全协议传输。

设置一个cookie的函数封装

function setCookie(key,val,date){   

        if(date)  document.cookie = key + "=" + val + ";expire=" + date;    //如果传递了时间对象 ,需要设置有效期

        else  document.cookie = key + "=" + val ;     //不需要设置时间有效期

  }


2.查询cookie

console.log(document.cookie);//查询cookie信息,如果有多条,多条之间用分号与一个空格字符隔开即";  ";如果没有cookie信息,结果为空

第二章 Cookie及http协议_第2张图片

2.根据name删除cookie

一周内免登陆

商品浏览记录

简单购物车的应用

照片墙的记录

五cookie 的安全策略

你可能感兴趣的:(第二章 Cookie及http协议)