有关cookie和路径的RFC问题

时间:2010-01-26 02:45:00

标签: http authentication cookies rfc

我正在尝试在用户登录时将会话cookie设置为限制在特定路径(例如/foo)。复杂性是登录页面在/上,但是请求立即重定向到/foo/something。像这样:

请求:

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)说明了这一点:

  

为了防止可能的安全或隐私侵犯,用户代理   拒绝cookie(不得存储其信息),如果有的话   以下是真的:

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

...

上面描述的cookie设置过程似乎工作没问题,但据我所知,RFC说不应该这样做。

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

我误读了RFC吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

不要关注那些RFC;他们与现实背道而驰。

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

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

如果您未在草稿中找到解决问题的文字,请与工作组联系!

答案 1 :(得分:0)

根据您的问题,我认为您对RFC的理解是正确的。听起来你想在重定向到 '/ foo / home' 之后设置cookie。我认为真正的问题是:“你怎么告诉 '/ foo / home' 用户通过 '/'正确认证了用户 ?“

如果您必须使用位置标头(重定向)从 '/' 转到 '/ foo / home' ,似乎唯一的方法是在Location标头的值中使用查询字符串参数。

可能需要考虑的一个设计问题是:为什么用户会对他们将安全访问的路径之外的URL进行身份验证?如果唯一的安全内容位于 '/ foo' 下,那么为什么不POST到 '/ foo / login' 而不是 '/' 进行身份验证?