我正在ASP.Net 4中开发一个网站。其中一个要求是记录人们用来查找我们网站的搜索查询。因此,假设在Referrer中存在名为“q”的URL参数,我在MasterPage的Page_Load中编写了以下代码:
if (!CookieHelper.HasCookie("mywebsite")) CookieHelper.CreateSearchCookie();
我的CookieHelper
课程是这样的:
public class CookieHelper
{
public static void CreateSearchCookie()
{
if (HttpContext.Current.Request.UrlReferrer != null)
{
if (HttpContext.Current.Request.UrlReferrer.Query != null)
{
string q = HttpUtility.ParseQueryString(HttpContext.Current.Request.UrlReferrer.Query).Get("q");
if (!string.IsNullOrEmpty(q))
{
HttpCookie adcookie = new HttpCookie("mywebsite");
adcookie.Value = q;
adcookie.Expires = DateTime.Now.AddYears(1);
HttpContext.Current.Response.Cookies.Add(adcookie);
}
}
}
}
public static bool HasCookie(string cookiename)
{
return (HttpContext.Current.Request.Cookies[cookiename] != null);
}
}
乍一看似乎没问题。我创建了一个页面,模仿谷歌的链接,就像一个魅力。但它不适用于主机服务器。原因是当您搜索blah blah
时,您会在浏览器地址栏中看到类似www.google.com/?q=blah+blah
的内容。您希望在结果中点击您的链接,将重定向到您的网站,您可以获取“q”参数。但是,不幸的是,事实并非如此! Google首先会将您重定向到以下地址:
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCgQFjAA&url=http%3A%2F%2Fwww.mywebsite.com%2F&ei=cks5Uof4G-aX0QXKhIGoCA&usg=AFQjCNEdmmYFpeRRRBiT_MGH5a1x9wUUlg&bvm=bv.52288139,d.d2k&cad=rja
这将重定向到您的网站。如你所见,这次“q”参数为空!我的代码获取一个空字符串,实际上不会创建cookie(或其他)。 我需要知道是否有办法解决这个问题并获得真正的“q”值。用户输入的真实搜索字词用于查找我的网站。有人知道如何解决这个问题吗?
答案 0 :(得分:1)