是否有一种干净且符合规范的方法来定义自定义 URL 方案,该方案充当另一个 URL 返回的资源的适配器?
我已经定义了一个自定义 URL 协议,它返回本地文件的解密表示。因此,例如,在我的代码中,
decrypted-file:///path/to/file
透明地解密您将从file:///path/to/file
. 但是,这仅适用于本地文件。没有什么好玩的!我希望 URL 规范允许一种简洁的方式,我可以通过将新的 URL 方案定义为现有 URL 上的一种适配器来概括这一点。
例如,我是否可以改为定义一个自定义 URL 方案decrypted:
,该方案可用作适配器,为检索资源的另一个绝对 URL 加前缀?然后我可以做
decrypted:file:///path/to/file
或decrypted:http://server/path/to/file
或decrypted:ftp://server/path/to/file
或什么的。这将使我的decrypted:
协议可以与所有现有的进行文件检索的 URL 方案组合。
Java 对 URL 方案做了类似的事情,jar:
但从我对RFC 3986的阅读来看,这种 Java 技术似乎违反了 URL 规范。嵌入的 URL 未正确进行字节编码,因此嵌入 URL 中的任何/
、?
或#
分隔符都应正式视为嵌入 URL 中的段分隔符(即使JarURLConnection不是这样做的)。我想保持在规格范围内。
有没有一种很好且正确的方法来做到这一点?或者是对整个嵌入式 URL 进行字节编码的唯一选择(即,decrypted:file%3A%2F%2F%2Fpath%2Fto%2Ffile
不太好)?
我建议的(URL 适配器)是在其他任何地方完成的吗?还是有更深层次的原因导致这是被误导的?