读取和写入HTTP标头

时间:2012-12-17 20:40:36

标签: c# asp.net

目前我有一个包含两个页面的Web应用程序,Login和Default。

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

我对C#中的HTTP标头缺乏经验,我之前尝试过从登录中添加值而没有成功....

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

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

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

然后最终清除我所堆积的所有自定义废话的标题,我试图使用...

Response.Headers.Clear();

我一直在寻找互联网,但我似乎无法找到关于如何实现类似任务的任何教程或任何逐步解释。

1 个答案:

答案 0 :(得分:4)

由于HTTP是无状态协议,因此您无法使用HTTP标头在请求之间共享数据。我没有看到你的代码本身有什么问题,但没有规则说在一个响应中发送到客户端的HTTP头(login.aspx),应该在下一个请求中发送回服务器(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标头的传输方式。