为什么我的response.sendRedirect(returnURL)最终会杀死我设置的任何域名cookie?

时间:2012-05-09 15:04:19

标签: jsp cookies response.redirect

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

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

也没问题。 'returnURL'获得正确的映射等。但是,当我调用“response.sendRedirect(returnURL)”时,我被重定向到与cookie相同的域的第三方站点(这是正确的)。 ..但现在所有的COOKIES都已经消失了。

知道为什么会这样吗?

提前致谢!

1 个答案:

答案 0 :(得分: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