我正在查看mochiweb的源代码,发现测试cookie过期时间的数字看起来与我继承的服务器的行为完全不同。mochiweb在源代码中有111和86417 (一天加17秒),但它看起来只有在cookie过期和测试代码中才能做到这一点。(参见mochiweb_cookies.erl)
我正在观察的服务器在大约10-15分钟内使用户超时,但是我没有看到任何设置cookie值的代码,我也没有看到任何通过mochiweb源代码的代码路径允许我设置它。
有什么想法吗?
发布于 2011-12-03 03:22:24
这里实际上有两个问题:“我的应用程序是如何处理会话过期的?”和“如何用mochiweb_cookies设置cookie?”只有第二个问题可以在没有进一步信息的情况下得到合理的回答。
Req:ok("text/plain",
[mochiweb_cookies:cookie("session", "my-session-id", [{max_age, 86417}])],
"you're logged in!")cookie/3返回一个{"Set-Cookie", "headervalue"}对,它适合作为mochiweb_request:respond和mochiweb_request:ok的ResponseHeaders参数中的值。
当然,可以在不使用mochiweb_cookies模块的情况下在mochiweb中设置cookie,毕竟它们只是头文件。您的应用程序可能通过手工制作标头来设置cookie,或者同一域下托管的代理或其他应用程序服务可能正在设置cookie。
也就是说,如果可能的话,您应该避免依赖cookie过期来注销用户。max-age实际上只是提示浏览器在该时间过后停止发送cookie。浏览器或攻击者总是可能行为不端,无限期地发送cookie。
https://stackoverflow.com/questions/7640975
复制相似问题