代码之家  ›  专栏  ›  技术社区  ›  Manu JCasso

如何在http和https之间共享asp.net会话

  •  8
  • Manu JCasso  · 技术社区  · 16 年前

    我了解到,在https连接下运行的页面不能与在常规http下运行的另一个页面(或相同的页面)共享InProc会话(基于Cookie)。我的网站运行在Server 2003、IIS 6和。网络2.0。

    那么,我是否有可能或应该检查SSL配置中的缺陷呢?

    4 回复  |  直到 16 年前
        1
  •  15
  •   Community Mohan Dere    10 年前

    MSDN

    在安全区域和公共区域之间 ASP。NET生成的会话cookie(或 如果您启用了无cookie的URL 会话状态)随它们一起移动 饼干从不被传递 未加密的HTTP连接 .

    因此,基本上,如果满足以下条件,cookie可以通过HTTP和HTTPS传递 Secure 属性设置为 false .

    我通过将此添加到我的 Global.asax 文件:

    void Session_Start(object sender, EventArgs e) 
    {
        if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false;
    }
    

    这意味着,如果会话cookie是通过HTTP创建的,则只能通过HTTPS访问。

        2
  •  6
  •   Holt Mansfield    15 年前

    IIS设置

        3
  •  1
  •   Iain M Norman    16 年前

    到目前为止,寻找这个问题并没有引起太多的讨论,仍在寻找。

    编辑

    是的,如果两组页面都在同一个应用程序/网站中,它似乎会很好地工作。

    所以我会放心地继续前进。

        4
  •  1
  •   Muhammad Raheel    9 年前

    如果上述任何解决方案都不起作用,请尝试以下操作。经过几天的研究,我已经破解了这个问题。

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        ...
        ...
        CookieSecure = CookieSecureOption.Never
    });