【问题标题】:RFC question about cookies and paths关于 cookie 和路径的 RFC 问题
【发布时间】:2011-01-09 09:11:16
【问题描述】:

当用户登录时,我正在尝试将会话 cookie 设置为仅限于特定路径(比如说/foo)。复杂之处在于登录页面位于/,但请求会立即重定向到@ 987654325@。像这样的:

请求:

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?

提前致谢!

【问题讨论】:

    标签: http authentication cookies rfc


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      不要关注那些 RFC;它们与现实的差距非常大。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 2020-12-19
        • 2021-01-02
        • 1970-01-01
        相关资源
        最近更新 更多