2010-01-26 42 views
3

我试图在用户登录时将会话cookie设置为特定路径(假设为/foo)。复杂的是登录页面位于/,但请求立即重定向到/foo/something。事情是这样的:有关Cookie和路径的RFC问题

请求:

POST/HTTP/1.1 

username=foo&password=bar 

响应:

HTTP/1.0 302 Found 
Location: http://example.com/foo/home 
Set-Cookie: session=whatever; path=/foo 

然而,RFC文档中的相关内容,我可以找到(rfc2109rfc2965)这样说:

为防止可能的安全或隐私违规,请拒绝用户代理 TS一个cookie(不存储它的信息),如果任何 以下的为真:

  • 为Path属性的值不是请求 - URI的前缀。

...

上述cookie的设置过程似乎工作还好,但据我可以告诉的RFC说这不应该。

我想在生产系统中使用它,但如果以后我会遇到可怕的浏览器不兼容问题,我真的不想这样做。

我误读了RFC?

在此先感谢!

回答

1

不要注意那些RFC;他们与现实相差甚远。

目前有一个IETF工作组正在记录实际的Cookie行为;他们的文件虽然只是一份草稿,但却是更好的材料。

请参见: http://datatracker.ietf.org/doc/draft-ietf-httpstate-cookie/

如果你没有发现,在草案涉及您的问题文本,把它与工作组!

0

根据你的问题,我认为你对RFC的理解是正确的。听起来好像你想在重定向到'/ foo/home'后设置cookie。我认为真正的问题是:“你怎么知道‘/富/家’用户被‘/’正确验证?”

如果你必须使用一个Location头(重定向)从“/”“/富/家”,似乎要做到这一点是使用一个查询的唯一方法位置标题值中的字符串参数。

也许一个需要考虑的设计问题是:为什么用户需要对他们将安全访问的路径之外的URL进行身份验证?如果只有安全的内容下“/富”,那么为什么不开机自检“/富/登录”,而不是“/”进行身份验证?