URL 缩短:重定向到 'file://' 目标(文件协议目标)

Posted

技术标签:

【中文标题】URL 缩短:重定向到 \'file://\' 目标(文件协议目标)【英文标题】:URL shortening: redirection to a 'file://' target (file protocol target)URL 缩短:重定向到 'file://' 目标(文件协议目标) 【发布时间】:2010-12-27 12:32:49 【问题描述】:

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

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

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

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

提前致谢!

【问题讨论】:

P.S. Raj 很高兴接受我的第二个答案,因为它更好地解释了事情。我之所以这么问,是因为您接受的答案过去常常贴在顶部,以便为其他读者提供帮助。因此,在这种情况下,它不会提供任何帮助。这个答案是为了娱乐。谢谢。 【参考方案1】:

这对于某些安全性来说是不可能的吗 原因?还是我做错了什么 在这里?

是的。

【讨论】:

【参考方案2】:

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

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

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

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

如果位置是相对的,没有 前导 '/' 容器解释 它相对于当前请求 URI。如果位置是相对的 容器解释的前导“/” 它相对于 servlet 容器根目录。

【讨论】:

谢谢 - 这是有道理的。但是,在 IE 中,重定向适用于“某些”目标。重定向到本地磁盘“C:\foo.doc”似乎不起作用,但“D:\foo.doc”可以 - 其中“D”是网络驱动器。 D 是网络驱动器,它已安装。确实,这会起作用,为什么它不应该。不确定使用 IE 访问 C 驱动器的问题。顺便说一句,你收到什么信息? 你确定,你的C 驱动器中有 foo.doc 吗?如果是,那么肯定有一些关于 Windows 主分区或 NTFS 分区或类似的东西。不确定,不能肯定地说。从来没有遇到过这个,因为我没有 Windows。 ;)

以上是关于URL 缩短:重定向到 'file://' 目标(文件协议目标)的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息

HTML/PHP URL Shortener 在 URL 之后 / 在 URL 中通过 ID 重定向

如何重定向到 Java/Spring 控制器中的 URL [重复]

WordPress 重定向插件,用于在目标 URL 中包含查询参数

对动态短网址使用 301/303/307 重定向

如何获取网站重定向目标网址(最终用户链接)