代码之家  ›  专栏  ›  技术社区  ›  Dan Aditi

关于cookie和路径的RFC问题

  •  3
  • Dan Aditi  · 技术社区  · 15 年前

    我试图将会话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的相关部分( rfc2109 rfc2965 这样说:

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

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

    上面描述的cookie设置过程似乎 工作 好吧,但据我所知,RFC说不应该。

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

    我是否误读了RFC?

    事先谢谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   M Nottingham    14 年前

    不要关注那些RFC;它们与现实非常背离。

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

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

    如果在草稿中找不到解决问题的文本,请向工作组提出!

        2
  •  0
  •   AJ.    15 年前

    基于你的问题,我认为你对RFC的理解是正确的。听起来你想在重定向到 '/fo/home . 我认为真正的问题是:“你怎么说的? '/fo/home 用户已通过正确的身份验证 “/”

    如果必须使用位置标题(重定向)从 “/” '/fo/home 似乎唯一的方法是在位置头的值中使用查询字符串参数。

    可能需要考虑的一个设计问题是:为什么用户针对他们将安全访问的路径之外的URL进行身份验证?如果唯一的安全内容低于 '/fo’ ,那么为什么不发布到 “/oo/登录” 而不是 “/” 用于身份验证?