http与cookie and session

Posted 皇家玄学团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http与cookie and session相关的知识,希望对你有一定的参考价值。

1.HTTP是计算机通过网络进行通信的规则
2.HTTP是一种无状态的协议(不建立持久的连接,服务端不保留连接的相关信息,浏览器发出请求和服务器返回响应是一个没有记忆的过程)
3.一个完整的【HTTP请求】过程有7个步骤:
1>建立TCP连接
2>Web浏览器向Web服务器发送请求命令
3>Web浏览器发送请求头信息
4>Web服务器应答
5>Web服务器发送应答头信息
6>Web服务器向浏览器发送数据
7>Web服务器关闭TCP连接

http请求:
1.HTTP请求的方法或动作,post或get
2.正在请求的URL
3.请求头,包含一些客户端环境信息,身份验证信息等
4.请求体(请求正文),包含要发送的一些字符串信息,表单信息等等
//请求头和请求体之间有一个空行,表面请求头已经结束
GET:一般用于信息的获取,使用URL传递参数,对发送信息的数量也有限制,一般在2000字符!默认方式,一般用于查询、获取操作,不是很安全,任何人可见,信息都显示在URL中
POST:一般用于修改服务器上的资源,对所发送的数量无限制。一般用于发送表单数据,新建,修改,删除等操作,要安全一些,不在URL中显示,对其他人不显示。
【幂等】:一个操作任意多次执行所产生的影响均与一次执行的影响相同。GET请求就是一种幂等操作。

【HTTP响应】一般由3部分组成:
①一个数字或文字组成的状态码,用来显示请求是成功还是失败
②响应头,和请求头一样包含许多有用信息,如服务器类型、日期时间、内容类型和长度等
③响应体,即响应正文//响应头和响应体之间有空行

【HTTP状态码】
1XX:信息类,表示收到Web浏览器请求,正在进一步处理中
2XX:成功,表示用户请求被正确接收
3XX:重定向,表示请求没有成功,客户必须采取进一步动作
4XX:客户端错误,表示客户端提交的请求有错误,例如:404 NOT Found,意味着请求中所引用的文档不存在
5XX:服务器错误,表示服务器不能完成对请求的处理,如:500

1.Ajax主要的功能是实现了浏览器端 异步 访问服务器:通过浏览器的XMLHttpRequest对象发出小部分数据,与服务端进行交互,
服务端返回小部分数据,然后更新客户端的部分页面。
2.json是Ajax发送小部分数据的一种轻量级数据格式,可以简单易懂的给服务器或者浏览器交互数据,包括jason对象,jason数组对象。
3.跨域的原理是:协议://子域名.主域名:端口号/服务端地址,除了服务端地址的改变叫做重定向意外,其他几个可变更的参数中任意一个的改变就叫做跨域。

cookie 与 session

cookie 与 session 是一对形影不离的好兄弟,所以:有cookie就会有sesssion,有session 就会有cookie。
cookie存在于客户端,session存在于服务端。cookie与session相配合,实现了用户认证的功能,解决了张三是张三的问题。

我们用下图来模拟一下客户端与服务端之间的对话:
技术分享

是的,过程就这么简单,在实际的请求过程中,也的确如上图一样,cookie就这样产生了。

总结如下:
1、当浏览器第一次访问服务器时,确切地说是一个域名时,那么是不会带有cookie信息的,然后服务器就会给它分配一个。只要服务器为浏览器分配了cookie,那么在以后的访问中,浏览器就会自动带上这个cookie来访问我们了。
2、当然了,我们还会为这个cookie设置一个过期时间,如果超过了这个时间点,浏览器再访问服务器时,就会摈弃这个cookie,然后再由服务器给它分配另一个cookie。

cookie的确是一个敏感信息,因为如果用户掌握到了我们的cookie,就会以我们的身份去访问那个站点。所以cookie是不能够跨域的,就是说,A服务器为浏览器分配的cookie,浏览器在访问B站点时,是不会带上A服务器为其分配的cookie的。

在firefox中,我们如下查看cookie信息。

技术分享

在chrome中,我们如下查看cookie信息。

技术分享

在这里,我们之所以要利用一些工具来查看cookie信息,是由于cookie的传递对于我们而言是透明的。浏览器由于自动进行了cookie传递,使得我们即使没有写发送cookie的代码,但cookie还是会由浏览器自动发送给服务器。当然,服务器发送给浏览器的cookie也是一样。这也是我们在分析一些数据流时,往往省略cookie数据的原因。

请多打开几个站点,看看他们都使用了什么cookie信息。

至于session,可以存在文件中,可以存在数据中,还可以存在于另外一些服务器(一台专门运行内存对象缓存系统的电脑)的内存中,它把数据存在哪里,以及怎么存储或读取的,并不是我们学习的重点。我们只需要知道,每一个cookie对应着唯一的一个session就可以了。

session可以简单认为是一个小的数据库系统,它可以凭借一个叫做cookie的凭证来读取、写入、修改、删除数据。和数据库系统不同的是,它存的数据是有『有效期』的,过了这个有效期,它便会销毁数据。

在本章中,我们也正是利用了cookie与session的唯一性,来实现了用户认证。基本的验证流程如下:
技术分享

cookie与session同时也是安全问题的一部分,前期有个了解就好,随着我们继续学习,以后将有机会在这方面进行深入的学习。










































以上是关于http与cookie and session的主要内容,如果未能解决你的问题,请参考以下文章

cookies and session

Introduction of Cookie and Session

Django—Cookie and Session

Cookie and Session

session and cooike

Django之cookie and session