近期在準備借鑒云風的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權威指南》里將很清楚,經典書才是硬道理。