用python web框架的同学都知道,在使用例如django,烧瓶,龙卷风等这些网页框架的时候,都有已经为大家封装好了的setcookie的方法。那么这个方法究竟做了什么。可能有些新人朋友并不能很好的理解。那么今天dewei就带着大家剖析一下,这些网页框架里的类似setcookie的方法(名字可能各不相同),究竟做了什么?
首先大家知道,在一个http请求中,至少包含两个结构,1是标题,请求的头信息,里边包含发起者的一些信息和一些附带的自定义信息;二是身体请求传输的数据,那么在头中,有一个关键叫做“Set-Cookie",当web服务器的请求响应返回浏览器端的时候,如果这个响应的标题中包含“set - cookie”,那么浏览器就认为有要种植到饼干里的键值对。那么这个“set - cookie”的结构如何呢?我们在进一步和大家讨论。
好。我们看上边的例子,有一个setcookie,他的价值是一个字符串,那么大家和我从前往后看:令牌=xxxxx是我们要存入饼干里的键值对,域是你要将这个键值对存入哪个域名下,比如www.abc.com;那么当存在这个域名下之后,只有在这个域下才可以看到这个饼干信息,路径是具体显示在这个域名下的哪个路径,一般就在根就好了,最后的是到期是一个该键值对的过期时间,这个时间,是一个格林尼治时间时间(要加8小时哟)。当然还有其他的参数,比如httponly,只有设置这个饼干的后端才可以获取和修改,信息他是一个有效期按照秒来计算的,一般和到期有一个存在就可以了。这里边有一个坑在于,设置时间的时候,有的框架是给一个datetime,有的是给一个秒,都不一样,但如果从原始状态设置的时候,是要设置格林尼治时间时间的。这里要注意下。另外这里每个参数之间用“,”隔开,那么那些网页框架里的类似setcookie就是将你传进去的参数封装好后放入头中~更多的一些参数可以查看这里
最后我们再来说一会话说,对于会话大家第一个理解的内容普遍(初级)是:它存在服务器端。没有错,他的最终的价值的确存在服务端,但其实会话和饼干也有着重要的牵绊。当生成一个会话的时候,会生成一个键:值,比如session_12138: uidxxxxx这是一个键值对。但实际上他依然会种一个饼干到浏览器,类似这样的键值对session_token: session_12138。大家有没有发现什么?这个饼干里的价值实际上就是服务器端的关键,所以通过饼干取出会话的关键,在通过关键取得会话最终的结果。这就是会话与饼干的关系~有的新人朋友,对这里理解不是非常透彻,今天解释一下相关的流程,希望对大家有所帮助~