首页 > 其他分享 >HTTP URL 详解

HTTP URL 详解

时间:2024-05-09 13:22:06浏览次数:18  
标签:片段 HTTP URL 详解 参数 服务器 资源

概述

URL 提供了一种定位因特网上任意资源的手段,大多数 URL 语法都由以下九个结构的通用格式组成:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

  • 方案:访问服务器以获取资源时要使用哪种协议
  • 用户:某些方案访问资源时需要的用户名
  • 密码:用户名后面可能要包含的密码,中间由冒号分隔
  • 主机:资源宿主服务器的主机名或 IP 地址
  • 端口:资源宿主服务器正在监听的踹口号,很多方案都有默认端口号(HTTP 的默认端口号为 80)
  • 路径:服务器上资源的本地名,由一个斜杠(/)将其与前面的 URL 组件分隔开来
  • 参数:指定输入参数,参数为键值对,URL 中可以包含多个参数,使用分号分隔
  • 查询:同样用来指定输入参数,参数为键值对,URL 中可以包含多个参数,使用 & 分隔
  • 片段:一小片或一部分资源的名字,引用对象时,不会将 frag 字段传送给服务器,这个字段是在客户端内部使用的

方案

方案规定如何访问指定资源的资源标识符,常用的方案有:

  • HTTP:文本传输协议,除了传递普通文本,还可以传递文件流或者进制编码等信息,是目前最常用的 web 传输
  • HTTPS:基于 SSL 加密的 HTTP 传输协议,比 HTTP 更加的安全
  • FTP:文件传输协议,一般用来实现资源文件在服务器上的上传下载

用户名和密码

有些服务器都要求输入用户名和密码才会允许用户访问数据,FTP 服务器就是一个常见的例子:

ftp://ftp.prep.ai.mit.edulpub/gnu

第一个例子没有用户或密码组件,只有标准的方案、主机和路径,这时浏览器通常会插入一个默认的用户名和密码,用户名一般是 anonymous(匿名用户),密码则根据浏览器而异

ftp://joe:[email protected]/gnu

第二个例子指定了用户名(joe)和密码(joespasswd)


主机与端口号

主机组件标识了因特网上能够访问资源的宿主机器,可以用主机名(www.joes-hardware.com)或者 IP 地址来表示。端口组件标识了服务器正在监听的网络端口,对下层使用了 TCP 协议的 HTTP 来说,默认端口号为 80


路径

路径组件说明资源位于服务器的什么地方,路径通常很像一个分级的文件系统路径,比如:http://www.joes-hardware.com:80/seasonal/index-fall.html


参数

对很多方案来说,只有简单的主机名和路径是不够的,除了服务器正在监听的端口,以及是否能够通过用户名和密码访问资源外,很多协议都还需要更多的信息才能工作

为了向应用程序提供它们所需的输入参数,以便正确地与服务器进行交互,URL 中有一个参数组件。参数由键值对组成,使用 ; 将其与 URL 的其余部分以及其他参数分隔开,为应用程序提供了访问资源所需的所有附加信息,比如:

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

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

如前所述,HTTP URL 的路径组件可以分成若干路径段,每段都可以有自己的参数,比如:

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

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


查询

很多资源,比如数据库服务,都可以限定查询条件来缩小所请求资源的范围。比如,数据库维护着一张货物表,我们希望找到编号 12731 的货物,就可以使用如下 URL 来查询

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

多个参数之间可以用 & 分隔

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


片段

有些资源类型,比如 HTML,除了资源级之外,还可以做进一步的划分。比如,对一个带有章节的大型文本文档来说,资源的 URL 会指向整个文本文档,但理想的情况是,能够指定资源中的那些章节

为了引用资源的一个片段,URL 支持使用片段(frag)组件来表示资源的一个片段。比如,URL 可以指向 HTML 文档中一个特定的图片或小节。

片段挂在 URL 的右手边,最前面有一个字符 #。比如:http://www.joes-hardware.com/tools.html#drills

在这个例子中,片段 drills 引用了页面/tools.html 中的一个部分,这部分的名字叫做 drills

HTTP 服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源


URL 编码

一般来说,URL 只能使用英文字母、阿拉伯数字和某些标点符号。如果 URL 带有中文或者特殊字符时,就需要对 URL 进行编码,使用安全字符去表示那些不安全的字符

URL 只允许使用 ASCII 字符集可以显示的字符,比如英文字母、数字、和 - _ . ~ ! * 这六个特殊字符。当在 URL 中使用不属于 ASCII 字符集的字符,如中文,空格,就要使用特殊的符号对该字符进行编码,比如空格需要用 %20 来表示

另外,还需要对 URL 中的部分保留字符和不安全字符进行编码,因为这些字符有可能产生歧义,造成服务器解析错误,比如 URL 查询参数中包含了 & 或者 %

保留字符:? = & / . ... # @ $ + ; %

部分不安全字符:[ ] < > " " { } | \ ^ * · ‘ ’

标签:片段,HTTP,URL,详解,参数,服务器,资源
From: https://www.cnblogs.com/Yee-Q/p/18181934

相关文章

  • HTTP 结构概述
    Web客户端和服务器Web内容都是存储在Web服务器上的,Web服务器所使用的是HTTP协议,因此经常被称为HTTP服务器,HTTP服务器存储了因特网的数据。客户端向服务器发送HTTP请求,服务器会在HTTP响应中返回请求的数据。最常见的HTTP客户端就是浏览器资源最简单的Web资源......
  • Windows备份和恢复驱动程序详解
    在进行系统重装后,驱动程序的重新安装通常是一项繁琐的任务。为了简化这一过程并降低数据丢失的风险,建议对Windows驱动程序进行备份。以下是一个指南,用于备份和恢复驱动程序。备份驱动程序启动PowerShell:首先,点击“开始”菜单,在搜索框中输入“WindowsPowerShell”,并以管理员权......
  • https://github.com/long36708/long36708/blob/main/resources/img/grid-snake.svg 请
    对于这个文件,你可以将它放在你的GitHub仓库的"resources"目录下,通常也可以选择"assets"、"images"或者其他类似的名称。如果你还没有这样的目录,你可以按照以下步骤操作:在你的GitHub仓库中创建一个新的目录,可以命名为"resources"、"assets"、"images"或者其他你喜欢......
  • Kraft协议详解
    在kafka3.0之后,kafka正式推出了kraft模式,通过节点之间kraft共识保证Quorum机制,Leader节点的选举由具有投票权的Controller来决定。集群元数据信息都存在集群本身的topic里QuorumQuorum中一个节点可以处于一下四种状态(1)Candidate,可以主动发起投票(2)Leader,唯一,也是ActiveContr......
  • httpstat:测量HTTP请求的性能和状态信息
    Github地址:https://github.com/reorx/httpstatHTTP(HypertextTransferProtocol)是互联网上应用最广泛的协议之一,用于在客户端和服务器之间传输数据。在开发和维护Web应用程序时,了解HTTP请求和响应的性能和状态信息非常重要。Pythonhttpstat是一个强大的命令行工具,用于深入了解H......
  • C++基础-如何引入第三方静态库、动态库或自定义库 摘自 https://blog.csdn.net/u01310
    C++无论是内置库还是第三方库,都需要自己手动进行查找、配置、引入等工作。本文即是帮助完成C++项目对于库、框架如何完成依赖引入达成可调用的目的,重点讲述开发工具VisualStudio中的操作静态库(.lib)静态库引入适用用于大部分无开源的第三方库,开发者不需要关心库的具体实现如何,......
  • bond模式详解与配置
    1.bond介绍以太网通道绑定(EthernetChannelBonding)是一种网络技术,用于将多个物理网络接口(通常是以太网网卡)组合成一个逻辑接口。这样做的目的是增加网络带宽、提高可靠性和提供冗余备份。在以太网通道绑定中,多个物理接口被绑定在一起形成一个虚拟的接口,称为Bond接口。该Bond......
  • 中文语料库 没有类似https://www.english-corpora.org/里的 A/B compare的好用的
    BCC一旦用~,统计,就查不全CCL有个“搭配查询”但是很不好用,必须指明词性和词长/距离,coca里任意1-4距离,词性也是任意 搭配查询,用于查询(对比)不同动词前后的共现名词的频次差异。例如:查询表达式“刷(n,=2)|擦(n,=2)”,表示查询“刷”和“擦”后面的词长为2的名词。两个动词......
  • HTTPS 是如何进行安全传输的 ?
    概述现代密码学对信息的处理主要离不开以下的三种形式:摘要:主要用于数据校验,例如存储密码等,摘要是对信息进行单向的哈希,改变信息的原有形态,因为哈希函数的特点是易变性(即使微小的变化也会产生完全不同的哈希值),而且无法被反向推导出来,例如上文提到常见的哈希加密方式有:MD2/4/5/6......
  • launch文件详解
    学习参考文章:ROS学习笔记-roslaunch文件的编写&用sh脚本控制launch文件启动顺序_launch文件怎么设置权限-CSDN博客【ROS】从入门到急眼--launch文件详解_launch文件注释-CSDN博客[ROS系列学习教程]launch文件_roslaunch教程-CSDN博客4.2.6launch文件标签之rosparam·Aut......