0

基本上......每当用户登录我的网站时,我都会创建一个带有加密客户数据的 cookie。这样做没有问题。

但是,如果第 3 方站点用户单击我们的登录链接,我不仅需要创建相同的加密客户 cookie,还需要将它们重定向到我从第 3 方站点生成的 URL 构建的“returnURL”。

这样做也没问题。“returnURL”得到正确的映射等。但是,当我调用“response.sendRedirect(returnURL)”时,我被重定向到与 cookie 相同域的第 3 方站点(这是正确的)。 ..但现在所有的饼干都不见了。

知道为什么会这样吗?

提前致谢!

4

1 回答 1

0

编辑:我的回答好像 OP 询问了 ASP.NET,而他实际上谈论的是 JSP。我将在这里留下我的答案以供参考,但这与问题无关。

如果您执行Response.Redirect();导致Response.End();被调用的操作(将 true 作为第二个参数传递,或者根本不传递第二个参数),如果这是您第一次为用户编写会话信息,您将丢失会话数据。例如,登录后,您可以设置 do:

Session["userId"] = userId;
Response.Redirect("admin.aspx");

解决方法是调用

Response.Redirect("admin.aspx", false);

如果在您进行重定向时会话尚不存在,您只会丢失会话数据。这里没有设置的不是会话数据本身,而是标识会话的 cookie。

Betrand LeRoy 更详细地解释了这一点:

http://weblogs.asp.net/bleroy/archive/2004/08/03/207486.aspx

于 2012-05-11T10:21:32.047 回答