2

我正在尝试一个 URL 缩短器的简单实现,例如 tinyurl.com 或 bit.ly。目前我response.sendRedirect(targetURL)在我的 servlet 中做了一个 - 它适用于 http/ftp 目标 URL。

但是,我在重定向到目标时遇到了问题,例如file:///c:/tempc:\temp当然在本地/客户端系统上)。

在 Firefox 地址栏上键入file:///c:/temp有效,但来自服务器的重定向似乎无济于事。

出于某种安全原因,这不可能吗?还是我在这里做错了什么?

提前致谢!

4

2 回答 2

1

出于某种安全原因,这不可能吗?还是我在这里做错了什么?

是的。

于 2009-12-17T04:07:09.343 回答
1

不想通过解释事情来破坏我第一个答案的美丽。因此,我决定,应该在这里进行解释。

好吧,你怎么能想到首先访问你客户的本地驱动器。它确实是一个安全问题。就像那样,您无权访问客户端的文件系统。

看来您不需要这样做。如果你必须,出于某种奇怪的原因,那么你可以考虑一个签名的小程序或其他东西,我相信。

就您的困惑而言,它正在您的 Firefox 上运行。这是因为您可以访问自己的机器,并且 URL 对 firefox 来说是可以理解的。但是,在 servlet 中,您不能这样做。阅读文档sendRedirect(),它说

如果该位置是相对的,没有前导“/”,则容器将其解释为相对于当前请求 URI。如果位置与前导“/”相对,则容器将其解释为相对于 servlet 容器根。

于 2009-12-17T04:15:32.337 回答