encodeURL和encodeRedirectURL之间的区别

时间:2011-01-12 20:01:25

标签: java java-ee

javax.servlet.http.HttpServletResponse的{​​{3}}对于encodeURLencodeRedirectURL遵循的规则之间的区别有点模糊,是否有这些确切规则的例子? encodeURL的输出何时与encodeRedirectURL不同?

对于一个具体的例子,我已经生成了一个我将与response.sendRedirect(url)一起使用的重定向网址。我得到的网址已经编码了,但是我想为它添加一个参数,它的值是另一个网址:

param2=http://google.com

我用这两个函数中的哪一个来编码?

2 个答案:

答案 0 :(得分:14)

Salam Alekom Abduallah, 我查看并寻找答案,我知道我会在stackoverflow或coderanch中找到它,在那里我找到了Charles Lyons的answer,我手里拿着这本书的作者,这是一个令人愉快的巧合。

  

发表于8/9/2008 11:41 AM   确切地说 - 不同之处在于encodeURL总是写入   会话ID到URL中(如果需要,例如因为cookie是   已禁用),而encodeRedirectURL包含其他逻辑   确定是否需要写入会话ID。它是一个   给外国网站提供会话ID真是个坏主意,例如,   从那时起,他们可以冒充用户的会话。于是   encodeRedirectURL只会将jsessionid放在URL上   位于当前的Web应用程序中,不执行任何重写   否则。

Charles Lyons(SCJP 1。4,2003年4月; SCJP 5,2006年12月; SCWCD 1.4b,2004年4月) OCEJWCD研究助手甲骨文考试1Z0-899(国际标准书号0955160340)的作者

我也发现了这个answer,这是之前发布的,

  

发表于2006年4月19日上午8:02报告发布给主持人嗨,

     

encodeURL用于编码会话跟踪的网址   转发和包括机制。 encodeRedirectURL对。编码   指定的URL,用于sendRedirect方法。

     

两者的主要区别在于,执行   encodeRedirectURL方法包括判断是否的逻辑   在您遇到的情况下,会话ID需要在URL中进行编码   将URL重定向到会话信息的不同上下文   不是必需的或无效的。 encodeURL方法不会附加   如果启用了cookie,则为seesion id。除此之外   如果URL是,则encodeRedirectURL不会附加会话信息   重定向到不同的上下文(Web应用程序)。因为   做出此决定的规则可能与以往不同   决定是否编码普通链接,这个方法是separete   encodeURL方法。

     

希望这对你有所帮助。

     

由于

     

Narendra Dhande

答案 1 :(得分:7)

encodeURL()用于servlet输出中的所有URL。 它可以帮助使用URL对会话ID进行编码。

encodeRedirectURL()仅与res.sendRedirect一起使用。它还用于使用URL编码会话ID,但仅在重定向时使用。

相关问题