【发布时间】:2010-10-17 23:01:11
【问题描述】:
我多次向我解释过,所有 URL 都是 URI,但并非所有 URI 都是 URL。任何人都可以举一个 URI 但不是 URL 的例子吗?
【问题讨论】:
-
data uri 是一个不是 url 的 uri 示例。示例:
data:,Hello%2C%20World!
标签: url uri web-standards
我多次向我解释过,所有 URL 都是 URI,但并非所有 URI 都是 URL。任何人都可以举一个 URI 但不是 URL 的例子吗?
【问题讨论】:
data:,Hello%2C%20World!
标签: url uri web-standards
统一资源名称 (URN) 是一个 URI,它通过名称在特定命名空间中标识资源。 URN 可用于谈论资源而不暗示其位置或如何访问它。例如,URN urn:isbn:0-395-36341-1 是一个 URI
来自:维基百科:http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
【讨论】:
常见的情况是URN,它是格式为urn:namespace-id:resource-id 的URI。根据维基百科:
在 1997 年的 RFC 2141 中定义,URN 旨在用作 持久的、与位置无关的标识符,允许简单的 将命名空间映射到单个 URN 命名空间。的存在 这样的 URI 并不意味着所标识资源的可用性,但 此类 URI 必须保持全局唯一性和持久性,即使 当资源不再存在或变得不可用时。
这两种资源引用样式(URL 和 URN)后来在 URI 的概念下合并,但它们仍然被认为具有不同的用途(强调我的):
统一资源名称 (URN) 可以与人名进行比较, 而统一资源定位器 (URL) 可以与他们的街道进行比较 地址。换句话说,URN 标识一个项目,一个 URL 提供一个 找到它的方法。
【讨论】:
urn:isbn:0451450523
【讨论】:
从here 窃取的示例(其中还有对差异的描述):
URL http://www.pierobon.org/iis/review1.htm
URN www.pierobon.org/iis/review1.htm#one
URI http://www.pierobon.org/iis/review1.htm.html#one
【讨论】:
XML Schema 通常使用 URI 进行标识,虽然它们的格式可能类似,但由于它不是 URL,因此无法保证其中存在任何内容。
如果您必须验证 XML 文件,则必须能够识别正确的 XML 架构。在成功验证意味着任何有用之前,必须在内容和模式作者之间共享一种标识方法。 URI 可以很好地满足这一需求。请记住,使用 XML 文件不一定需要模式。因此,它不需要是通用的可定位或可用的,它只需要是可识别的。 URI 的语义避免了资源必须位于“此处”的暗示,就像 URL 的情况一样,并且有充分的理由。这样的细节与识别任务无关。
架构发布者通常会基于他们拥有的 URL 来创建 URI。我可以想象这样做有很多原因,但其中一个原因是,它有助于避免在没有中介的情况下发生命名冲突。当使用这样的约定时,很难拒绝将定义托管在 URI 将指向的位置(如果它位于 URL 的位置)。虽然通过了解手段是必要的,但我相信这样做标志着一项值得赞赏的努力,并且是良好信息架构的一个例子,但这一事实仍然与 URI 满足的需求无关。
【讨论】:
既不是 URL 也不是 URN 的 URI 示例是数据 URI,例如: 数据:,你好%20World 它不是 URL 也不是 URN,因为 URI 包含数据。它既不命名它,也不告诉您如何通过网络找到它。
取自这里:https://webmasters.stackexchange.com/questions/19101/what-is-the-difference-between-a-uri-and-a-url
我认为 TofuBeer 的答案(目前投票最多)是错误的。
【讨论】:
为了测试我的单元测试中失败的异常(涵盖 URI ←→ Java 中的 URL 转换),我使用以下示例:
"_ " — 来自 String 的无效 URI
"data://valid-uri" — 有效的 URI,但无效,格式错误的 URL(MalformedURLException 从 URI#toURL 抛出)。"valid-uri" — 有效 URI,但无效,非绝对 URL(IllegalArgumentException 从 URI#toURL 抛出)。"http:// _" — 有效的URL,但无效,格式错误的URI(URISyntaxException 从URL#toURI 抛出)。这可能不是 RFC 规范的完美答案,但这些是 Java 的有效示例。
【讨论】: