假设我打开浏览器,访问baidu,搜索到椅子,再打开其中一个页面
那么baidu得到的referer是空,后面页面得到的referer是www.baidu.com...

解决方案 »

  1.   

    Referer表示超链接源的URL!你想看到实验效果,要从a-->(能过<a href="b.jsp")b页面,然后在B里可以取得Refere参数!
      

  2.   


    我懂你的意思啊,我就是通过一个html文件:
    <a href="http://localhost:8080/it317/servlet/RequestHeadersServlet">referer header test</a>去访问RequestHeadersServlet这个Servlet,然后在RequestHeadersServlet的service方法中调用String referrer_value = req.getHeader("referer");结果referrer_value的值却是null调用req.getHeaderNames();得到的里面也没有Referer这个头
      

  3.   

    String url = request.getHeader("REFERER");url取到的值是此次请求的前一次请求的url地址但是此次请求必须通过超连接请求或是提交请求才能得到上一个请求的URL直接在地址栏输入访问的话则是null建议你先清楚一下页面缓存,和浏览器的缓存。 
      

  4.   

    你要访问的那个超链接,必须是和你的tomcat是同一域下的,否则就是null比如你超链接是http://127.0.0.1/web/a.jsp才可以,如果你的超链接是http://www.163.com 不是同一域的,返回就是null
      

  5.   


    谢谢指教,我不知道为什么会这样,不过你说的好像是对的,我在我的硬盘中直接双击打开那个html文件,再点击上面的超链接,就没有Referer头
    我在IE里面输入http://localhost:8080/it317/Referrer.html 去访问那个html文件,再点击上面的超链接,就出来了Referer头但我不懂为啥会这样
      

  6.   

    终于看到lz的回复了,一直看不到o(∩_∩)o...这是为了防止连接被盗
      

  7.   

    硬盘双击,是file://xxx.htm访问和http访问不一样referer是http协议中定义的头另外,是否大小写敏感,有待确认,我是历来严格要求自己保持良好的大小写习惯
      

  8.   


      呵呵 你在硬盘中双击打开的HTML页面 能连接到一个Servlet嘛? 呵呵
      

  9.   

    你要它在referer头里设置啥呢? 它要的是一个URL 给它个C:/xx.html? 它也没法翻译成url阿
      

  10.   

    下载个winsock Expert抓包一看就明白了:
    从本地双击打开的htm文件,点击里面的link去访问别的页面时,不会往外发送referer这个字段另外,回classnameextendsjava:
    c:/xxx.html严格说也是一个url吧,或者说file://c:/xxx.html也是url,具体见百度百科
      

  11.   

    to 楼上file://访问不构造http头,和http;//访问不同
      

  12.   

    Referer大小写敏感
    只有http://开头并且点页面链接才会发送Referer
    直接在地址栏写地址不会有Referer
    跨域也会发送Referer推荐用ieHttpHeader插件看ie发送和接收的http头