request.getHeader("Referer")中的Referer是从哪里来的?

sAS112UUUYY111 2010-07-30 04:47:51
request.getHeader("Referer")中的Referer是从哪里来的?

括号里面的值还可以是什么呢?
在api里面没查到
...全文
3932 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gniavaj 2010-08-02
  • 打赏
  • 举报
回复
这个Referer是http协议中定义的

简单来说request是客户端发起的一个请求

一个http请求也就是遵循http协议的一段有规律的字符串,
你可以用firebug,httpwatch看一下一个请求的详细内容

比如那这个页面中的一个js来说
用firebug查看请求信息如下

GET /adjs.php?n=348893119&what=zone:382&charset=utf-8&exclude=,&referer=http%3A//topic.csdn.net/u/20100730/16/fd41a3a3-8976-49ce-b32e-65011241e626.html HTTP/1.1
Host: z.csdn.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://topic.csdn.net/u/t5/include/ad1.asp?pdate=2010-07-30%2016:47:51&ba=Java&sa=J2EE



request.getHeader("Referer") 就是得到这个字段的值
Referer: http://topic.csdn.net/u/t5/include/ad1.asp?pdate=2010-07-30%2016:47:51&ba=Java&sa=J2EE

shine333 2010-08-02
  • 打赏
  • 举报
回复
ChDw 2010-08-02
  • 打赏
  • 举报
回复
点击一个链接时,浏览器会添加当前页面地址 到这个新链接的请求头中的
ChDw 2010-08-02
  • 打赏
  • 举报
回复
简单的说,Referer就是上一个页面的地址,这个是浏览器会在点击一个链接时自动添加到请求头中的,HTTP协议中定义的。
AskForAnswers 2010-08-02
  • 打赏
  • 举报
回复
7#的资料不错。

楼主可以去了解一下Http协议。
sAS112UUUYY111 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bao110908 的回复:]
你用 request.getHeaderNames() 方法可以罗列出所有的 header 名称。
[/Quote]
还是谢谢了
sAS112UUUYY111 2010-08-02
  • 打赏
  • 举报
回复
没发现Referer
y11111494 2010-08-02
  • 打赏
  • 举报
回复
request.getHeaderNames():accept
request.getHeaderNames():accept-language
request.getHeaderNames():accept-encoding
request.getHeaderNames():user-agent
request.getHeaderNames():host
request.getHeaderNames():connection
request.getHeaderNames():cookie
y11111494 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bao110908 的回复:]
你用 request.getHeaderNames() 方法可以罗列出所有的 header 名称。
[/Quote]
打印结果:org.apache.tomcat.util.http.NamesEnumerator@5d3ac0
  • 打赏
  • 举报
回复
你用 request.getHeaderNames() 方法可以罗列出所有的 header 名称。
sAS112UUUYY111 2010-07-30
  • 打赏
  • 举报
回复
也就是说"Referer"这里字段在哪里定义了呢?
sAS112UUUYY111 2010-07-30
  • 打赏
  • 举报
回复

public static String getReturnPathDefaultUseRefererHeaderValue(HttpServletRequest request) {
String returnPath=request.getParameter(WebConstants.PARAMETER_RETURN_PATH);
if(StringUtils.isNotBlank(returnPath)){
return returnPath;
}

String referer=request.getHeader("Referer");
if(StringUtils.isBlank(referer)||!referer.startsWith(WebAppUtils.getBaseAccessUrlWithoutPort(request)))){
return null;
}
return new String(Base64.encodeBase64(referer.getBytes()));
}


sAS112UUUYY111 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eimhee 的回复:]
Referer 是从哪里来到你这个页面, 比如从BAIDU, GOOGLE

http://www.xxx.com/1.html 上点连接到 http://www.xxx.com/2.html 上


http://www.xxx.com/2.html的Referer就是http://www.xxx.com/1.html
[/Quote]

我明白是这个意思,但是我不知道为什么要填这个字段?

括号里面的值还可以是什么呢?
eimhee 2010-07-30
  • 打赏
  • 举报
回复
Referer 是从哪里来到你这个页面, 比如从BAIDU, GOOGLE

http://www.xxx.com/1.html 上点连接到 http://www.xxx.com/2.html 上


http://www.xxx.com/2.html的Referer就是http://www.xxx.com/1.html
kbyst 2010-07-30
  • 打赏
  • 举报
回复
源代码地看看

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧