encodeURL 和 encodeRedirectURL 之间的区别

2022-09-02 13:00:07

javadoc对于规则和遵循的规则之间的区别有点模糊,是否有任何例子说明这些确切的规则是什么?的输出何时会与 ?javax.servlet.http.HttpServletResponseencodeURLencodeRedirectURLencodeURLencodeRedirectURL

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

param2=http://google.com

我使用两个函数中的哪一个来对此进行编码?


答案 1

萨拉姆·阿列科姆·阿卜杜拉(Salam Alekom Abduallah),我寻找并寻找一个答案,我知道我会在堆叠流或代码流中找到答案,在那里我找到了查尔斯·莱昂斯(Charles Lyons)的答案,这本书的作者现在在我手中,这是一个令人愉快的巧合。

发布于 8/9/2008 11:41 AM 确切地说 - 区别在于 encodeURL 始终将会话 ID 写入 URL(如果需要,例如,因为 Cookie 被禁用),而 encodeRedirectURL 包含其他逻辑来确定是否需要写入会话 ID。例如,为外国网站提供会话ID是一个非常糟糕的主意,因为这样它们可能会冒充用户的会话。因此,如果该 URL 位于当前 Web 应用程序中,则 encodeRedirectURL 只会将 jsessionid 放在 URL 上,否则不会执行任何重写。

查尔斯·莱昂斯(SCJP 1.4,2003年4月;SCJP 5, 2006年12月;SCWCD 1.4b,2004 年 4 月)《ORACLE 考试 1Z0-899 的 OCEJWCD 学习伴侣》(ISBN 0955160340)的作者

我也找到了这个答案,这是早些时候发布的,

发表于 4/19/2006 8:02 AM 报价 报告帖子给主持人 嗨,

encodeURL 用于对 URL 进行编码,以便以转发和包含机制进行会话跟踪。编码重定向 URL 对指定的 URL 进行编码,以便在 sendRedirect 方法中使用。

两者之间的主要区别在于,encodeRedirectURL方法的实现包括一种逻辑,用于确定在将URL重定向到会话信息不需要或无效的不同上下文时是否需要在URL中对会话ID进行编码。如果启用了 Cookie,则 encodeURL 方法不适用于 seesion ID。除了此编码之外,如果 URL 重定向到不同的上下文(Web 应用程序),则不要追加会话信息。由于用于进行此确定的规则可能与用于决定是否对普通链接进行编码的规则不同,因此此方法与 encodeURL 方法分开。

希望这对您有所帮助。

谢谢

纳伦德拉·丹德


答案 2

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

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


推荐