【发布时间】:2014-06-09 01:22:03
【问题描述】:
我有一个用 Classic ASP 编写的电子商务网站,它使用 Session 来存储购物车内容和其他内容。
商品以 HTTP 的形式添加到购物车,当用户结账时,它们会被带到 HTTPS。此时没有问题,HTTPS 结帐页面正确获取 Session 值。
问题是,如果他们点击返回购物车 (HTTP),Session 就会丢失。
如果他们随后将商品添加到购物车中,则它们会在购物车中正确显示 (HTTP)。
但是当他们再次结帐(HTTPS)时,原始会话中消失之前的项目又回来了。
如果他们返回 HTTP 购物车页面,就会发现不同的商品。
所以总而言之,我第一次从 HTTP 转换到 HTTPS 时它工作正常,但之后就像有两个独立的会话。
HTTP 和 HTTPS 的域名完全相同。
网站托管在共享托管环境中。它是 64 位服务器上的 IIS7。
我尝试过集成和经典的托管管道模式。
在 web.config 中,我为 HTTP 和 HTTPS 设置了相同的会话,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="Default Web Site">
<system.webServer>
<asp>
<session keepSessionIdSecure="false" />
</asp>
</system.webServer>
知道如何解决这个问题吗?
更新:查看 HTTP 标头似乎在转到 HTTPS 时会创建第二个 ASP 会话 Cookie。不知道为什么会清除第一个。当返回 HTTP 时,只有原始 cookie,但它在会话中不再有任何值,因此可能已经分配了新 cookie,而之前的 cookie 不再有效。
【问题讨论】:
标签: iis-7 asp-classic