我在向Page.Request
&添加值时遇到一些问题Page.Response
标题,并有关键&价值保持/通过重定向持续。
我有一个枚举跟踪代码,我想将其放在标题中,以跟踪用户在结帐前如何浏览我的网站。
我正在使用此代码将标头添加到响应和请求上下文。
var RequestSessionVariable = context.Request.Headers["SessionTrackingCode"];
if (RequestSessionVariable == null)
{
context.Response.AddHeader("SessionTrackingCode", ((int)tracker).ToString());
context.Request.Headers.Add("SessionTrackingCode", ((int)tracker).ToString());
}
else
{
if(!RequestSessionVariable.Contains(((int)tracker).ToString()))
{
RequestSessionVariable += ("," + ((int)tracker).ToString());
context.Request.Headers["SessionTrackingCode"] = RequestSessionVariable;
context.Response.Headers["SessionTrackingCode"] = RequestSessionVariable;
}
}
在网站中必要控件的Page_Load
内发生的方法调用:
trackingcodes.AddPageTrackingCode(TrackingCode.TrackingCodes.ShoppingCart, this.Context);
标题SessionTrackingCode
是他们的,但在Response.Redirect("~/value.aspx")
之后,RequestSessionVariable
始终为空。是否在重定向上发生了一些会消除我添加的标题的内容?或者在添加标题键和值时我做错了什么?
this
等于:
public partial class Cart : System.Web.UI.UserControl
答案 0 :(得分:0)
客户端在每个请求上发送标头,因此任何重定向都需要客户端再次发送标头。
除非您使用某些特殊客户端(不是浏览器),否则在请求期间基本上会忽略/丢失任何特殊标头。浏览器仅在请求中发送已知标头(cookie,身份验证,引用者),并在响应(setCookies)中对其他一组已知标头执行操作。您正在使用浏览器不知道的自定义标头,因此浏览器不会从响应中读入,也不会在请求中发送它。
您的选择:
注意:在页面代码中添加标题请求没有多大意义,因为请求不会在任何地方发送(它来自浏览器)。
答案 1 :(得分:0)
这看起来像是一个Cookie的工作,而不是http标头。浏览器不会向您返回自定义标题,但会返回您的Cookie。