Skip to content

URL 和 URI 有什么不同? #33

@wujunchuan

Description

@wujunchuan

2017年09月25日: 整理自我的知乎上的回答

正好这几天在看HTTP权威指南,遇到了URL与URI和URN的概念,所以就来回答了

下面分别对URI,URN,URL做解释:

URI:Uniform Resource Identifier (统一资源标识符):用一个紧凑的字符串用来标示抽象或物理资源

也就是说,URI只是规定如何标识资源,没有规定如何获取资源 也就是what the resource is but i don't care how to get the resource

URL:Uniform Resource Locator (统一资源定位符):URL是URI最常见的表现形式.它明确说明如何从一个精准、固定的位置获取资源

URL不但规定了如何标识资源,还规定了如何获取资源..也就是what the resource is && how to get the resource
URL遵循以下格式,来自HTTP权威指南的节选

URN:Uniform Resource Name (统一资源名称):URN作为特定内容的唯一名称使用,与目前的资源所在地无关,使用这些与位置无关的URN,就可以将资源到处搬移

也就是I know the resource name and get the resource,but you don't need to know how can i do.

通过URN,可以使用相同一个名字通过多种网络访问协议来访问资源
不过,现在还只是试验阶段,并没有大规模使用..因为URN需要一个支撑架构来解析资源的位置,目前还缺乏类似的架构支持

URN一般都是urn: 作为开头

所以,三者的关系如下图

A URI has two specializations known as URL and URN.

URI是URL与URN的父类,URI是抽象的表现,他们的关系就像蝴蝶都会飞,但会飞的可不都是蝴蝶. 所有的URL与URN都是URI,但是URI不一定就是URL或者URN

举例说明:

可以参考一下StackOverflow关于这个问题的讨论:What is the difference between URI, URL and URN?
有个常见Q&A挺好的,希望对你有帮助:)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions