URI与URL区别

URL 与 URI

很多人会混淆这两个名词。

URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。

URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。

关系:

URI 属于 URL 更高层次的抽象,一种字符串文本标准。

就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。

二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。

端口 与 URL标准格式

何为端口?端口(Port),相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相应的回复通过开启的端口传给对方。

端口的作用:因为 IP 地址与网络服务的关系是一对多的关系。所以实际上因特网上是通过 IP 地址加上端口号来区分不同的服务的。

端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

URL 标准格式

通常而言,我们所熟悉的 URL 的常见定义格式为:

                    scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]
scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host   //HTTP服务器的IP地址或者域名
port#  //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/
path   //访问资源的路径
url-params  //所带参数
query-string    //发送给http服务器的数据
anchor //锚点定位

利用 a 标签自动解析 url

开发当中一个很常见的场景是,需要从 URL 中提取一些需要的元素,譬如 host 、 请求参数等等。

通常的做法是写正则去匹配相应的字段,但是这里参考James 的 blog,原理是动态创建一个 a 标签,利用浏览器的一些原生方法及一些正则(为了健壮性正则还是要的),完美解析 URL ,获取我们想要的任意一个部分。

代码如下:

// This function creates a new anchor element and uses location
// properties (inherent) to get the desired URL data. Some String
// operations are used (to normalize results across browsers).

function parseURL(url) {
    var a =  document.createElement(‘a‘);
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(‘:‘,‘‘),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,‘‘).split(‘&‘),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split(‘=‘);
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/([^/?#]+)$/i) || [,‘‘])[1],
        hash: a.hash.replace(‘#‘,‘‘),
        path: a.pathname.replace(/^([^/])/,‘/$1‘),
        relative: (a.href.match(/tps?:\/[^/]+(.+)/) || [,‘‘])[1],
        segments: a.pathname.replace(/^\//,‘‘).split(‘/‘)
    };
}

Usage 使用方法:

var myURL = parseURL(‘http://abc.com:8080/dir/index.html?id=255&amp;m=hello#top‘);

myURL.file;     // = ‘index.html‘
myURL.hash;     // = ‘top‘
myURL.host;     // = ‘abc.com‘
myURL.query;    // = ‘?id=255&amp;m=hello‘
myURL.params;   // = Object = { id: 255, m: hello }
myURL.path;     // = ‘/dir/index.html‘
myURL.segments; // = Array = [‘dir‘, ‘index.html‘]
myURL.port;     // = ‘8080‘
myURL.protocol; // = ‘http‘
myURL.source;   // = ‘http://abc.com:8080/dir/index.html?id=255

利用上述方法,即可解析得到 URL 的任意部分。

参考:https://github.com/chokcoco/cnblogsArticle/issues/6

时间: 2024-08-05 11:12:58

URI与URL区别的相关文章

URI和URL区别

总结如下: 1.简写:URI (uniform resource identifier)统一资源标志符:URL(uniform resource location )统一资源定位符(或统一资源定位器):URN(uniform resource name )统一资源命名. 2.URI 和 URL 的比较 a.URI是一个相对来说更广泛的概念,URL是URI的一种,是URI命名机制的一个子集,可以说URI是抽象的,而具体要使用URL来定位资源. b.Web上的每一种资源如:图片.文档.视频等,都是由

URI和URL区别以及相对路径和绝对路径的区别

一.URL和URI定义: 1.URL是全球资源定位符的英文所写,您平时上网时在IE浏览器中输入的那个地址就是URL.比如:网易 http://www.163.com就是一个URL. 2.URI是Web上可用的每种资源 - HTML文档.图像.视频片段.程序,由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位. URL的格式由下列三部分组成: 第一部分是协议(或称为服务方式); 第二部分是存有该资源的主机IP地址(有时也包括端

HTP协议中URI和URL区别

URL(uniform  resource  location ):统一资源定位符 URI(uniform  resource  identifier):统一资源标志符 URI:可以表示一个域,也可以表示一个资源,是一个字符串格式规范,并没有指明用途:URL:只能表示一个域,是资源定位的规范,包括网址 服务器 文件路径 1.URI是个纯粹的句法结构,用于指定标志web资源的字符串的各个不同部分,URL是URI 的一个特例,它包含了定位web资源的足够信息:笼统的说,每个URL都有一个URI,但不

URI和URL有什么区别

从JDK1.5开始,java.net包对统一资源定位符(uniform resource locator URL)和统一资源标识符(uniform resource identifier URI)作了非常有用的区分. URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分.URL是URI的一个特例,它包含了定位Web资源的足够信息.其他URI,比如mailto:[email protected] 则不属于定位符,因为根据该标识符无法定位任何资源. 在Java类库中,URI类不包含

URI与URL的区别

(原网址:http://zhidao.baidu.com/question/38764759.html) Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位. 1.URI一般由三部分组成: 2.访问资源的命名机制. 3.存放资源的主机名. 4.资源自身的名称,由路径表示. 考虑下面的URI,它表示了当前的HTML 4.0规范: http://www.web

URI、URL与URN的区别

URI.URL与URN的区别 URI:Uniform Resource Identifier,统一资源标识符: URL:Uniform Resource Locator,统一资源定位符: URN:Uniform Resource Name,统一资源名称. 联系:URL,URN是URI的子集. Web上地址的基本形式是URI,它代表统一资源标识符.有两种形式: URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器. URN:URL的一种更新形式,统一资源名称(URN, Uniform

区别URI和URL

本人在看<图解HTTP>的时候,刚开始还对URI和URL的区别不是太在意,越到后面越发觉区别两者的必要性. 英文文档:"A URI is a uniform resource identifier while a URL is a uniform resource locator. Hence every URL is a URI, abstractly speaking, but not every URI is a URL. This is because there is an

[译] URI和URL有什么区别?

作为一名web开发人员,意味着尽可能得了解互联网工作原理是很有益处的,也意味着你会听到很多不经常被正确使用的首字母缩略词. 你会听到一个缩略词的例子,那就是URI和URL.虽然它们可以互换使用,但是他们之间还是有一些微妙的差别.对于初学者来说,URI表示统一资源标识符,URL表示统一资源定位符. 这两者大多数混淆是因为它们之间的关联性.你看,一个URI可以是一个名称.定位符或者两者兼有的在线资源,而URL只是其中的定位符.URL是URI的一个子集.那就说明,所有URL都是URI,但是反过来则不成

URI是什么意思?URI和URL有什么区别?

详解! HTTP = Hyper Text Transfer ProtocolURI = Universal Resource IdentifierURL = Universal Resource Locator 一句话解释:URI 和 URL 都定义了 what the resource is.URL 还定义了 how to get the resource. URI是用来标识网上的资源的URI分为URL和URN这两大类.URL与URN的不同之处在于前者不仅标识资源,而且还指出了访问资源的方式