HTTP协议-从URI开始

原文链接 bloggit

URI

URI, 既是统一资源标识符号,每一个 Web 服务器都有一个 URI 标识符,它在世界范围内惟一标识并定位信息资源。github

它具备两种形式,URN (统一资源名)、URL(统一资源定位符)。api

URN

URN (统一资源名),是做为特定内容的惟一名称使用的,与目前资源所在地无关。使用这些与位置无关的 URN,就能够将资源四处搬移。经过 URN,还能够用同一个名字经过多种网络访问协议来访问资源。浏览器

URL

URL(统一资源定位符),是 URI 最多见的形式,它描述了一台特定服务器上某资源的特定位置。它们能够明确说明如何从一个精确、固定的位置获取资源。服务器

一个完整的 URL 一般包括如下三部分:网络

  • 方案:方案部分,说明了 Web客户端 访问资源时所使用的协议类型。一般是HTTP协议。方案可使用其余协议来访问资源,它们能够指向因特网上的任意资源,好比:E-mail: jkchaom@gmail.com ,或者其余协议。
  • 服务器位置:这部分告知服务器端的位置位于何处。一般的组成是“主机名 + 端口”的形式告知,也有“ IP 地址 + 端口”的形式。端口标识出服务器正在监听的网络端口,对下层使用了 TCP 协议的 HTTP 来讲,默认端口号为80;
  • 资源路径:路径说明了请求的是服务器上哪一个特定的本地资源。

整合到结构,既是“方案 :// 服务器位置/路径”spa

此外,一些非必需的 URL 组件也在其中扮演着很是重要的做用:code

  • 查询:主要用来缩小所请求资源类型范围。一般以一个“ ?”,开始,好比如下URL 地址,https://api.jkchao.cn/api/art... 。按照常规,查询组件的组成是以一系列的“名/值”,对的形式出现,名值对之间用字符“&”分隔。
  • 片断:有些资源类型,能够作进一步划分,好比 HTML ,URL 支持使用片断组件来表示一个资源内部的片断。一般以“#” 开始,好比:https://github.com/jkchao/blo...HTTP 服务器一般只处理整个对象,而不是对象的片断,客户端不能将片断传送给服务器,浏览器从服务器得到了整个资源以后,会根据片断来显示片断资源。 所以,片断组件,仅由客户端使用。

URL 的缺点

URL 表示的是实际的地址,而不是准确的名字。这就意味着 URL 会告诉你资源此时处于什么位置,它会为你提供特定端口上特定服务器的名字,告诉你在何处能够找到这个资源。这种方案的最大弊端在于,若是资源被移走了,URL 也就再也不有效了。那时,它就没法对对象进行定位了。对象

永久统一资源定位符(PURL),是用 URL 实现 URN 功能的一个例子。其基本思路是在搜索资源的过程当中引入另外一个中间层,经过一个中间资源定位符服务器对资源的实际 URL 进行登记和跟踪,客户端能够向定位符请求一个永久 URL ,定位符能够以一个资源做为响应,将客户端重定向到资源当前实际 URL 上去。以下图所示:blog

相关文章
相关标签/搜索