2

目前我有一个有两个页面的网络应用程序,登录和默认。

我一直在不知疲倦地尝试编写 2x GUID,当在登录页面后面的代码中执行登录过程时,这些 GUID 返回到 HTTP 标头中。然后我想在默认页面的页面加载中读出这些内容。

我对 C# 中的 HTTP 标头相当缺乏经验,我之前尝试了以下方法从登录中添加值但没有成功......

Request.Headers.Add("GUID", strGUID);
Response.Headers.Add("GUID", strGUID);

要检索我尝试使用的默认页面上的值...

strGUID = Response.Headers.Get("GUID");

然后为了最终清除我堆积在其中的所有自定义垃圾的标题,我试图使用......

Response.Headers.Clear();

我一直在浏览互联网,但似乎找不到任何关于此的教程或任何关于如何完成类似任务的分步说明。

4

1 回答 1

4

由于 HTTP 是一种无状态协议,因此您不能使用 HTTP 标头在请求之间共享数据。我看不出您的代码本身有什么问题,但是没有规则说在一个响应(login.aspx)中发送给客户端的 HTTP 标头应该在下一个请求(default.aspx)中发送回服务器)。即使执行从 login.aspx 到 default.aspx 的重定向,这仍然是正确的,因为重定向本身与跟随它的页面视图是分开的。

您可能正在寻找的是持续多个请求的存储。为此,您可以使用 cookie 将值存储在浏览器中:

// Set in login.aspx
Response.Cookies.Add(new HttpCookie("Guid", Guid.NewGuid())

// Read in default.aspx
HttpCookie token = Request.Cookies["Guid"];

...或会话存储将值存储在服务器上。

// Set in login.aspx
Session["Guid"] = Guid.NewGuid();

// Read in default.aspx
Guid token = (Guid) Session["Guid"];

您可以使用Fiddler 之类的工具来检查 HTTP 流量,以更好地了解 HTTP 标头的传输方式。

于 2012-12-17T21:01:23.760 回答