美文网首页
5. HTTP协议, Session and Cookie

5. HTTP协议, Session and Cookie

作者: 何大炮 | 来源:发表于2018-05-06 14:51 被阅读0次

    HTTP协议

    HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器,网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口80)的HTTP请求。

    HTTP可以在任何其他互联网协议上,或者在其他网络上实现,作用在应用层。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。多数使用TCP/IP协议。
    ping属于ICMP协议,属于网络层。

    特点:通常都是server端都是被发起,也就是说server无法主动发起http请求。
    流程:建立连接,发起请求,接受返回消息,显示消息断开连接。

    类型:分为两类

    1. 客户机向服务器的请求消息
      请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
      在Django中,该信息由它自动包装,view中通常以request承接。
      django将请求报文中的请求行、首部信息、内容主体封装成 HttpRequest 类中的属性
    2. 服务器向客户机的响应消息
      状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
      由程序员构造的一个对象,定义于django.http。不需要返回模板,直接返回该对象。

    Session的概念

    对于一个服务器,他同时可能会处理成千上万的请求,他是如何区别不同的用户?或者说如何给特定的用户提供不同的服务呢?
    这里就要用到Session这个概念,就像是一段发生在一对一之间的会话,我先告诉你‘我是谁’,你再根据我是谁来回复我的话。(实现通话中断和恢复的操作)
    HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

    Session的实现

    既然要根据对方是谁来回复客户端的问题,那么我server端肯定要存储相关的信息。所以session在server端就是一个数据结构,存放了各个客户的信息。所以客户端是不可操作的。
    这里还有个问题,‘我是谁’这个信息是存放在哪里的呢?Cookie

    Cookie

    存在于客户端的数据结构,记录了用户的信息,同时也包括了session id,这个用于Session后台识别的‘我是谁’。客户端是可以操作的。

    Summery

    1. 存储地方不同
    2. session只会因为服务器端的操作而变化,Cookie只受到客户端影响。比如浏览器窗口关闭,session没有任何影响,但是Cookie就可能会受影响。
    3. Cookie帮助了session的实现。两者都是存储信息的载体。
    4. 如果Cookie被禁用,那么通过url重写或者显示传递都可以将session_id传递到后台。

    相关文章

      网友评论

          本文标题:5. HTTP协议, Session and Cookie

          本文链接:https://www.haomeiwen.com/subject/blplrftx.html