近期在准备借鉴云风的skynet来完善我们的架构。这个cookie研究是个插曲。
我这有个http server只做与数据库的代理接口用,同事那边有个http的web server,他的server需要以http client身份来访问我的server取数据。
我的server用的express,访问流程为先去一个path验证,验证完,这个http client就可以访问其他path了。验证的时候会标记client对应的session为已验证,之后的每次访问会检查这个标记。
二、对cookie的认识加深了些
这里的cookie流程是这样的,验证之后,server会在response的headers里设置上“set-cookie”的值,接下来的request需要带上这个cookie,否则server认为这个client没有被验证。
第二次request的response里可能会给设置新的cookie,第三次request需要带上第二次respones设置的cookie……
这样就是每次访问带上上次返回的cookie,server才会认为你这次的访问启用的client已经被验证过。
nodejs里的http.request默认是不会捎上cookie的,所以得自己封装下。
三、ps
cookie以前做模拟登陆时有想研究过,那时对http完全不了解,加上其他的事情,给放弃了。这次总算稍微留个感性认识了。
这里写的乱七八糟的,回头有空再完善这篇吧。
同一个站点的cookie不一定只是登陆够给的那个,而且cookie也不局限于用于登陆标记。例如登陆后浏览好久,开始启用某个功能需要做标记,cookie字段就动态增加了。为此在给node.js的http.request封装的维护cookie的agent后来修改了。
这些内容在《Http权威指南》里将很清楚,经典书才是硬道理。