比如:
我在百度的文本框中输入:csdn.net  这时地址栏中显示:http://www.baidu.com/s?wd=csdn.net&cl=3   在google中输入后显示:http://www.google.cn/search?hl=zh-CN&q=csdn.net&meta=&aq=f  这时连接指向:http://csdn.net/  点击后进入csdn.net主页,我现在想在csdn.net的主页(这里相当于是我自己的网站)中读取带有关键字的字符串http://www.baidu.com/s?wd=csdn.net&cl=3或者http://www.google.cn/search?hl=zh-CN&q=csdn.net&meta=&aq=f 
我用的方法: string   strvcome=""; 
            if   (Request.QueryString["referer"]   !=   null) 
            { 
                    strvcome   =   Request.QueryString["referer"].ToString(); 
            } 
可是取不到值的,希望得到帮助先谢谢大家了!!
年前发帖:http://topic.csdn.net/u/20080201/16/8b16a6b2-7038-471d-bf61-27f1152a39f3.html
lemong提示监视数据包有referer属性,可我不知如何监测几取值,望指教!
  

解决方案 »

  1.   

    取referer是正确的做法,如果referer是空置,请看看你测试所用的机器是否有什么安全防护软件。例如Norton等杀毒、防火墙软件,会把浏览器请求中的所有referer删除,导致你的网站获取不到值。
      

  2.   

    Request.QueryString["referer"]?referer参数哪来的?
    你的意思是取Request.UrlReferrer.ToString()吧
      

  3.   

    To:net_lover:
    System.Collections.Specialized.NameValueCollection ServerVariables = System.Web.HttpContext.Current.Request.ServerVariables;
     if (ServerVariables["HTTP_REFERER"] != null)
          {
              strvpage = ServerVariables["HTTP_REFERER"].ToString();
          }
    这时和Request.UrlReferrer.ToString()取到的值是一样的,都是指向当前页的连接啊(http://www.cctvii.com/)
    测试如下:百度中输入:上海信息发布 地址栏中:http://www.baidu.com/s?wd=%C9%CF%BA%A3%D0%C5%CF%A2%B7%A2%B2%BC&cl=3
    在第一页中有一个网站:http://www.cctvii.com/这是个测试网站,当点击进入http://www.cctvii.com/时
    地址栏变成:http://www.cctvii.com/,我在http://www.cctvii.com/网站中的首页加入代码<script src="http://keywords.etwun.com/Etw_Manage/SearchKeywords.aspx"  language="javascript"></script>
    其中:http://keywords.etwun.com/Etw_Manage/SearchKeywords.aspx是可以单独访问的域名,在
    http://keywords.etwun.com/Etw_Manage/SearchKeywords.aspx的后台:我用 
    1.strvcome = Request.UrlReferrer.ToString();得到:http://www.cctvii.com/
    2.strvcome= Request.ServerVariables["HTTP_REFERER"].ToString(),无值
    3.strvcome = Request.QueryString["Referer"].ToString();无值
    还是无法得到http://www.baidu.com/s?wd=%C9%CF%BA%A3%D0%C5%CF%A2%B7%A2%B2%BC&cl=3,急等中!!!
      

  4.   

    使用Request.UrlReferrer时注意: 
    1.  如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值
    2.  如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B 页面,则    Request.UrlReferrer返回空。因为 在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到b页面也就无法获得上一页面的信息   
    3.  点击刷新按钮不会改变Request.UrlReferrer 
      

  5.   

    1  首先在Page_load中获得并储存该信息Page_load(object obj,EventArgs e)
                 {
                         if(!IsPostBack)
                        {
                             if(Request.UrlReferrer!=null)  // 
                            {
                                                          ViewState["UrlReferrer"]=Request.UrlReferrer.ToString();
                            }
                        }
                 }1)       页面回发后会改变Request.UrlReferrer,将其指向当前页面,所以需要进行判断:只有在第一次请求页面的时候才储存该信息2)       因为可能“上一次”的url不存在,所以需要进行判断,只有在Request.UrlReferrer存在的情况下才进行储存
                 2.      然后在返回函数中使用该信息void Return(){    if(ViewState["UrlReferrer"]!=null)        Response.Redirect(ViewState["UrlReferrer"].ToString();}
      

  6.   

    vivi8233:非常感谢你的回复及Request.UrlReferrer的解释,但是却不是我要的答案,我现在的需求是取
    地址栏中:http://www.baidu.com/s?wd=%C9%CF%BA%A3%D0%C5%CF%A2%B7%A2%B2%BC&cl=3 的这个字符串
    在次谢谢,继续等!!!!(有做过流量统计的兄弟帮帮我啊!)
      

  7.   


      Server.UrlDecode("%C9%CF%BA%A3%D0%C5%CF%A2%B7%A2%B2%BC");
      

  8.   

    Server.UrlDecode("%C9%CF%BA%A3%D0%C5%CF%A2%B7%A2%B2%BC");
      

  9.   

      解决方法:把以下代码放到要统计的网站:
    <script  type="text/javascript">
            window.location.href="http://独立域名/Etw_Manage/SearchKeywords.aspx?referer="+escape(document.referrer)+"";
            </script>//这里可以在简化一点
    然后在http://独立域名/Etw_Manage/SearchKeywords.aspx后台: 
    if (Request.QueryString["Referer"] != null)
          {
              strvcome = Request.QueryString["Referer"].ToString();
          } 
    取值就可以了,希望可以给向我一样迷惘的兄弟一点提示!
      

  10.   

    Click the link to solve your problem.Good luck!