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 [重复]