使用 Cookie 在 ASP .NET 接口之间重定向,而不带查询字符串
本文关键字:字符串 查询 重定向 之间 Cookie ASP NET 接口 使用 | 更新日期: 2023-09-27 18:32:29
>我有两个asp .net接口:
1. app1.domain.com
2. app2.domain.com
在两者的默认页面中,都有一个链接按钮,我们可以从中在它们之间切换。以前我们使用查询字符串来传递用户名和密码。但是现在我们想使用饼干。所以在链接按钮的点击事件中,我有这样的代码:
HttpCookie cookie = new HttpCookie("MYCookie", Guid.NewGuid().ToString());
cookie.Domain = "domain.com";
cookie.Expires = DateTime.UtcNow.AddHours(1);
cookie.HttpOnly = false;
cookie.Secure = true;
cookie.Values.Add("Username", Username.ToString());
cookie.Values.Add("UserId", UserId.ToString());
Response.Cookies.Add(cookie);
Response.Redirect(destinationAddress);
现在,在其他应用程序的默认页面中,我将cookie读取为:
protected override void InitializeCulture() {
if (Request.Cookies["MYCookie"] != null) {
HttpCookie cookie = null;
cookie = Request.Cookies.Get("MYCookie");
}
}
但在这里发现 Request.Cookies["MYCookie"] 为空。我错过了什么吗?请指教。
在我看来
,问题出在您的域上。
将cookie.Domain = "domain";
更改为cookie.Domain = ".domain.com";
我认为您需要为 app1 和 app2 添加 HttpCookie 相同的路径属性
Response.Redirect 生成 ThreadAbortException。在您的 Cookie 中所做的所有更改都将丢失。所以你可以使用,
<meta http-equiv="Refresh" content="10; URL=your url" />
C# 代码:
System.Web.UI.HtmlControls.HtmlMeta meta = new System.Web.UI.HtmlControls.HtmlMeta();
meta.HttpEquiv = "Refresh";
meta.Content = "10; URL=your url";
Page.Header.Controls.Add(meta);
并把你的饼干设置为像
cookie.Domain = ".domain.com";