zoukankan      html  css  js  c++  java
  • URL与资源

    2.1URL 分以下三部分

    • URL 的第一部分(http)是 URL 方案(scheme)。方案可以告知 Web 客户端怎样访问资源。在这个例子中,URL 说明要使用HTTP 协议。
    • URL 的第二部分(www.joes-hardware.com)指的是服务器的位置。这部分告知Web 客户端资源位于何处。
    • URL 的第三部分(/seasonal/index-fall.html)是资源路径。路径说明了请求的是服务器上哪个特定的本地资源。

    URL 可以通过HTTP 之外的其他协议来访问资源。它们可以指向因特网上的任意资源,或者个人的E-mail 账户:
    mailto:president@whitehouse.gov
    或者通过其他协议(比如FTP 协议)访问的各种文件:
    ftp://ftp.lots-o-books.com/pub/complete-price-list.xls
    或者从流视频服务器上下载电影:
    rtsp://www.joes-hardware.com:554/interview/cto_video

    2.2URL语法

    大多数URL 方案的URL 语法都建立在这个由9 部分构成的通用格式上:
    <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

     2.2.1 方案——使用什么协议

    方案实际上是规定如何访问指定资源的主要标识符,它会告诉负责解析URL 的应用程序应该使用什么协议。

    方案组件必须以一个字母符号开始,由第一个“:”符号将其与URL 的其余部分分隔开来。方案名是大小写无关的,因此URL“http://www.joes-hardware.com”和
    “HTTP://www.joes-hardware.com”是等价的。

    2.2.2 主机与端口

    端口组件标识了服务器正在监听的网络端口。对下层使用了TCP 协议的HTTP 来说,默认端口号为80。

    下面两个URL 就指向同一个资源——第一个URL 是通过主机名,第二个是通过IP 地址指向服务器的:
    http://www.joes-hardware.com:80/index.html
    http://161.58.228.45:80/index.html

    2.2.3 用户名和密码

    很多服务器都要求输入用户名和密码才会允许用户访问数据。FTP 服务器就是这样一个常见的实例。这里有几个例子:

    ftp://ftp.prep.ai.mit.edu/pub/gnu
    ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
    ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
    http://joe:joespasswd@www.joes-hardware.com/sales_info.txt
    第一个例子没有用户或密码组件,只有标准的方案、主机和路径。如果某应用程序使用的URL 方案要求输入用户名和密码,比如FTP,但用户没有提供,它通常会插入一个默认的用户名和密码。比如,如果向浏览器提供一个FTP URL,但没有指定用户名和密码,它就会插入anonymous(匿名用户)作为你的用户名,并发送一个默认的密码(Internet Explorer 会发送IEUser,Netscape Navigator 则会发送mozilla)。
    第二个例子显示了一个指定为anonymous 的用户名。这个用户名与主机组件组合在一起,看起来就像E-mail 地址一样。字符“@”将用户和密码组件与URL 的其余部分分隔开来。
    在第三个例子中,指定了用户名(anonymous)和密码(my_passwd),两者之间由
    字符“:”分隔。

    2.2.4 路径

    URL 的路径组件说明了资源位于服务器的什么地方。路径通常很像一个分级的文件系统路径

    http://www.joes-hardware.com:80/seasonal/index-fall.html

    这个URL 中的路径为/seasonal/index-fall.html,很像UNIX 文件系统中的文件系统路径。路径是服务器定位资源时所需的信息。2可以用字符“/”将HTTP URL 的路径组件划分成一些路径段(path segment)(还是与UNIX 文件系统中的文件路径类似)。每个路径段都有自己的参数(param)组件。

    2.2.5 参数

    ftp://prep.ai.mit.edu/pub/gnu;type=d

    在这个例子中,有一个参数type=d,参数名为type,值为d。

     http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

    这个例子就有两个路径段,hammers 和index.html。hammers 路径段有参数sale,其值为false。index.html 段有参数graphics,其值为true。

    2.2.6 查询字符串

    http://www.joes-hardware.com/inventory-check.cgi?item=12731

    这个URL 的大部分都与我们见过的其他URL 类似。只有问号(?)右边的内容是新出现的。这部分被称为查询(query)组件。URL 的查询组件和标识网关资源的URL 路径组件一起被发送给网关资源。基本上可以将网关当作访问其他应用程序的访问点

     http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue

    在这个例子中,查询组件有两个名/ 值对:item=12731 和color=blue。

    2.2.7 片段

    片段挂在URL 的右手边,最前面有一个字符“#”。比如:

    http://www.joes-hardware.com/tools.html#drills

    在这个例子中,片段drills 引用了Joe 的五金商店Web 服务器上页面/tools.html 中的一
    个部分。这部分的名字叫做drills。

     2.3 URL快捷方式

    Web 客户端可以理解并使用几种URL 快捷方式。相对URL 是在某资源内部指定一个资源的便捷缩略方式。很多浏览器还支持URL 的“自动扩展”,也就是用户输入URL 的一个关键(可记忆的)部分,然后由浏览器将其余部分填充起来

    2.3.1 相对URL

    URL 有两种方式:绝对的和相对的。到目前为止,我们只见过绝对URL。绝对URL 中包含有访问资源所需的全部信息。

    另一方面,相对URL 是不完整的。要从相对URL 中获取访问资源所需的全部信息,就必须相对于另一个,被称为其基础(base)的URL 进行解析。

    相对URL 是URL 的一种便捷缩略记法

    基础URL 为:

    http://www.joes-hardware.com/tools.html用这个URL 作为基础,可以推导出缺失的信息。我们知道资源名为./hammers.html,但并不知道方案或主机名是什么。通过这个基础URL,可以推导出方案为http,主机为www.joes-hardware.com。

     2.3.2 自动扩展URL

    “自动扩展”特性有以下两种方式。

    • 主机名扩展

    在主机名扩展中,只要有些小提示,浏览器通常就可以在没有帮助的情况下,将你输入的主机名扩展为完整的主机名。比如, 如果在地址栏中输入yahoo, 浏览器就会自动在主机名中插入www.和.com,构建出www.yahoo.com。如果找不到与yahoo 匹配的站点,有些浏览器会在放弃之前尝试几种扩展形式。浏览器通过这些简单的技巧来节省你的时间,减少找不到的可能。

    但是,这些主机名扩展技巧可能会为其他一些HTTP 应用程序带来问题,

    • 历史扩展

    浏览器用来节省用户输入URL 时间的另一种技巧是,将以前用户访问过的URL历史存储起来。当你输入URL 时,它们就可以将你输入的URL 与历史记录中URL 的前缀进行匹配,并提供一些完整的选项供你选择。因此,如果你输入了一个以前访问过的URL 的开始部分,比如http://www.joes-,浏览器就可能会建议使用http://www.joes-hardware.com。然后你就可以选择这个地址,不用输入完整的URL 了。

    2.4 方案的世界

     

     

     

    URL 有两种方式:绝对的和相对的。到目前为止,我们只见过绝对URL。绝对URL 中包含有访问资源所需的全部信息。

  • 相关阅读:
    堆栈学习
    需要阅读的书籍
    Rust Book Lang Ch.19 Fully Qualified Syntax, Supertraits, Newtype Pattern, type aliases, never type, dynamic sized type
    Rust Lang Book Ch.19 Placeholder type, Default generic type parameter, operator overloading
    Rust Lang Book Ch.19 Unsafe
    Rust Lang Book Ch.18 Patterns and Matching
    Rust Lang Book Ch.17 OOP
    Rust Lang Book Ch.16 Concurrency
    Rust Lang Book Ch.15 Smart Pointers
    HDU3966-Aragorn's Story-树链剖分-点权
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12580258.html
Copyright © 2011-2022 走看看