02-URL与资源

news2024/11/18 15:23:21

浏览​因特网资源

  • URI是一类更通用的资源标识符,URL与URN是它的子集
  • URL通过描述资源的位置来标识资源
  • HTTP规范将更通用的概念URI作为资源标识符,实际上,HTTP应用程序处理的知识URI的URL子集
  • URL可以通过HTTP之外的其他协议来访问资源。
    http链接一般由协议,服务器的位置(域名),资源路径组成,如下图
    在这里插入图片描述

URL语法

URL通过不同方案进行不同资源的访问,不同方案URL语法会有些差异;但大多数URL方案的URL语法如下:

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

URL最重要的三个部分是方案(scheme),主机(host)和路径(path),具体说明如下表:

组件描述默认值
方案(scheme)访问服务器获取资源时要使用哪种协议
用户(user)某些方案访问资源时需要的用户名匿名
密码(password)用户名后买你可能要包含的密码,中间由冒号(:)分隔<E-mail地址
主机或域名(host)资源宿主服务器的主机名或点分IP地址
端口(port)资源宿主服务器正在监听的端口号。很多方案都有默认的端口号(HTTP的默认端口号为80)每个方案特有
路径(path)服务器上资源的本地名,由一个斜杠(/)将其与前面URL组件分隔开来。路径组件的语法是与服务器和方案有关的
参数(params)某些方案会用这个组件来指定输入参数。参数为名/值对。URL中可以包含多个参数字段,它们相互之间以及与路径的其余部分用(;)分隔
查询(query)某些方案会用这个组件传递参数以激活应用程序。查询组件的内容没有通用格式。用字符”?"将其与其余部分分隔开来
片段(frag)一片或一部分资源的名字。引用对象时,不会将frag字段传送给服务器;这个字段是在客户端内部使用的。通过字符“#”将其与其余部分分隔开来

方案

  • 规定如何访问指定资源的主要标识符,URL的应用程序会根据此进行解析
  • 方案组件必须以一个字母符号开始,由第一个":"符号将其与URL其他部分分隔开来
  • 方案名与大小写无关http:与HTTP:是等价的

主机与端口

​* 主机组件标识了能够访问资源的宿主机器(域名或IP地址)
*端口组件标识了服务器正在监听的网络端口

用户名和密码

  • 很多服务器都要求输入用户名和密码才允许用户访问数据
  • 如果应用程序是用的URL方案要求输入用户名和密码,但用户没有提供,通常会插入一个默认的用户名和密码

路径

  • 说明资源位于服务器的什么地方
  • 路径通常像一个分级的文件系统路径
  • 每段路径都有自己的参数(params)组件

参数

  • 在URL中以字符;分隔URL其他部分
  • 以名值对的形式存在

查询字符串

  • 以?分隔URL其他部分
  • 以名值对的形式存在,多个名值对用&分隔

片段

  • 以#号分隔URL其他部分
  • HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器
  • 浏览器会根据片段来显示对应的部分资源

URL快捷方式

指Web客户端可以理解并使用的几种快捷方式

相对URL

  • 相对URL是不完整的URL,需要依靠另一个被称为基础(base)的URL进行解析
  • 相对URL是URI的一种便捷缩略记法
  • 为一组资源的可移植性提供了一种便捷方式(如HTML与其相应的资源)
基础URL

基础URL是作为相对URL参考点是用,可以来自以下几个不同的地方

  • 在资源中显示提供
    有些资源会显式地指定URL。如,HTML文档中可能会包含一个定义了基础URL的HTML标记,通过它来转换那个HTML文档中的所有相对URL
  • 封装资源的基础URL
    没有显示指定的基础URL的资源中时,使用所属资源的URL作为基础
  • 没有基础URL
    某些情况下,没有基础URL,可能得到的是一个不完整或损坏的URL
解析相对引用

在这里插入图片描述

自动扩展URL

用户不需要输入完整的URL,浏览器会自动扩展。有以下两种方式

  1. 主机名扩展:只要有些小提示,浏览器通常就可以在没有帮助的情况下,将输入的主机名扩展为完整的主机名
  2. 历史扩展:将以前访问过的URL历史存储起来。当输入URL时,将输入URL与历史记录中的URL的前缀进行匹配,并提供一些完整的选项可以选择;

字符

URL是可移植的。它要统一第命名因特网上的所有资源,并且需要符合不同协议的传输规范,所以只能使用较小的,通用的安全字母表中的字符。但使用过程中,会遇到传递除安全字符外的其他字符,此时,就需要进行转义,再进行传输;

URL字符集

URL使用的字符集为US-ASCII字符集,有如下原因:

  1. 计算机系统字符集通常倾向于以英语为中心,很多计算机应用程序使用的都是US-ASCII字符集
  2. 历史悠久,可移植性好。通过转义序列,可以使用US-ASCII字符集的有限子集对任意字符值或数据进行编码,实现了可移植性与完整性
编码机制

使用转义来表示不安全字符,此转义表示法包含一个百分号(%),后面跟着两个字符ASCII码的十六进制数,常用的转义字符如:

字符ASCII码示例
~126(0x7E)https://xxx/%07E
空格32(0x20)https://xxx/%20xxx
%37(0x25)https://xxx/100%25
字符限制

URL中,有几个字符被保留起来,有特殊含义,有些字符不在定义的US-ASCII可打印字符集中,有些则会与某些因特网网关和协议产生混淆。以下字符,除了用于保留用途之外的场合时,要在URL中进行编码

字符保留/受限
%保留作为编码字符的转义标志
/保留作为路径组件中分隔路径段的界定符
.保留在路径组件中使用
保留在路径组件中使用
#保留作为分段定界符使用
?保留作为查询字符串定界符使用
;保留作为参数定界符使用
:保留作为方案、用户/口令,以及主机/端口组件的定界符自用
$ , +保留
@ & =在某些方案的上下文中有特殊含义,保留
{ } | \ ^ ~ [ ] ‘由于各种Agent代理,比如各种网关的不安全处理,使用受限
< > "不安全;这些字符在URL范围之外通常是有意义的,比如在文档中对URL自身进行定界,所以应该对其进行编码
0x00-0x1F,0x7F受限,这些十六进制范围内的字符都在US-ASCII字符集的不可打印区间内
>0x7F受限,十六进制值在此范围内的字符都不在US-ASCII字符集的7比特范围内

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1138525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查

LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查 介绍Lua表lua表初始化lua移除引用lua中向表中添加数据lua中表中移除数据lua表中连接数据lua表中数据排序获取lua表长度获取表中最大值 UnityC#中LuaTableUnityC#中LuaArrayTable、LuaDictTable、LuaDictTable<K,V>…

HTTP发起请求与收到响应的大致过程

可以《《透视 HTTP 协议》Windows 10 搭建最小实验环境》搭建环境&#xff0c;之后才能进行下边的操作。 1.鼠标左键点击两下www目录下的start.bat批处理文件。 2.打开Wireshark&#xff0c;然后选择Adapter for loopback traffic capture。 3.然后把tcp.port 80 || udp.…

基于Springboot自习预约管理系统

功能介绍&#xff1a; 基于Springboot自习预约管理系统。该系统为后台管理系统&#xff0c;无前台。主要角色有&#xff1a;管理员和学生。 主要功能&#xff1a; 学生信息管理&#xff1a;学号、姓名、专业、班级、年级、联系方式 教室信息管理&#xff1a;教室、教室号、楼…

el-form那些事

vue3element-plus el-form那些事 输入框后拼接文字 输入框后拼接文字 <el-form-item :label"t(location.locationLength)" prop"locationLength"><el-input v-model"form.locationLength" :placeholder"t(location.inputLocation…

深度学习中语义分割、实例分割、目标检测和图像分类区别

语义分割 实例分割 目标检测 语义分割&#xff1a;需要判断每个像素属于哪一个类别&#xff0c;属于像素级别分类标注 实例分割&#xff1a;相较于语义分割 会将同一类别的不同物体进行分离标注 目标检测&#xff1a;输入图像通常包含多个物体&#xff0c;对物体的位置与类别进…

C# 图解教程 第5版 —— 第9章 表达式和运算符

文章目录 9.1 表达式&#xff08;*&#xff09;9.2 字面量9.2.1 整数字面量9.2.2 实数字面量9.2.3 字符字面量9.2.4 字符串字面量 9.3 求值顺序9.3.1 优先级9.3.2 结合性 9.4 简单算术运算符9.5 求余运算符9.6 关系比较运算符和相等比较运算符9.7 递增运算符和递减运算符&#…

Babylonjs学习笔记(五)——创建PBR材质

书接上回&#xff0c;这里讨论PBR材质&#xff01;&#xff01;&#xff01; // 创建天空盒/* */const createSkyBox (scene:Scene):void>{const envTex CubeTexture.CreateFromPrefilteredData(./env/environment.env,scene)scene.environmentTexture envTex;scene.cre…

HTTP 之 options预请求 nginx 解决跨域 postman调试跨域问题

一、HTTP一共有八种常见请求方法 get&#xff1a;参数在url上&#xff0c;浏览器长度有限制&#xff0c;不安全post&#xff1a;参数不可见&#xff0c;长度不受限制put&#xff1a;上传最新内容到指定位置delete&#xff1a;删除请求的url所表示的资源head&#xff1a;不返回…

Android stdio 无法新建或打开AIDL文件(解决方法)

1.在gradle文件中添加如下代码 2.AIDL要求minsdk>16,并且要使aidl true&#xff08;在Gradle中添加&#xff09; android{ buildFeatures { aidl true } } 我们看见&#xff0c;可以创建AIDL文件了 3.接着&#xff0c;我们看到文件出现如下提示 4.在gradle…

CGAL+QT

先安装CGAL和QT 安装完QT其中MSVC 这两个没配置 1、x32配置选择的是 x64配置选择的是 2、CGAL 5.4.5 - Manual: Using CGAL on Windows (with Visual C) 参数文章配置一些环境变量 3、 测试 新建build 进行cmake QT、Boost、CGAL都自动匹配上了&#xff08;环境变量已经配…

出租屋智能视频监控系统方案:全面保卫租客安全

除了我们常见的家庭、社区、园区等智能监控&#xff0c;出租房作为很多人的暂住所也极易发生盗窃等事件&#xff0c;为保障大众租户的财产安全&#xff0c;旭帆科技特地针对出租屋制定了智能监控系统方案。 1、安装智能安防摄像头 高清晰度、夜视功能良好的智能摄像头&#xf…

vue 复杂的流程图实现--antv/g6

可以先看下对应的文档&#xff1a;G6 Demos - AntV npm install --save antv/g6 实现如图&#xff1a; <template><div class"drawflow"><div id"mountNode"></div></div> </template> <script> import G6 fr…

FreeRTOS 互斥量 优先级反转(翻转)和优先级继承 详解

目录 什么是互斥量&#xff1f; 什么是优先级反转&#xff08;翻转&#xff09;和优先级继承 互斥量相关 API 函数 优先级反转&#xff08;翻转&#xff09;示例 使用互斥量优化优先级反转&#xff08;翻转&#xff09;问题示例 什么是互斥量&#xff1f; 在多数情况下&a…

Perl爬虫程序

以下是一个使用Perl爬虫程序&#xff0c;用于爬取图像。每行代码的中文解释如下&#xff1a; #!/usr/bin/perl ​ use strict; use warnings; use Mojo::UserAgent; use JSON; ​ # 创建一个Mojo::UserAgent实例 my $ua Mojo::UserAgent->new; ​ # 使用获取代理 my $prox…

【机器学习可解释性】2.特征重要性排列

机器学习可解释性 1.模型洞察的价值2.特征重要性排列3.偏依赖图 &#xff08; partial dependence plots &#xff09;4.SHAP Value5.SHAP Value 高级使用 正文 前言 你的模型认为哪些特征最重要&#xff1f; 介绍 我们可能会对模型提出的最基本的问题之一是&#xff1a;哪…

react的table合并行时,出现border-bottom重复问题

背景&#xff1a; 需求是呈现一个表格&#xff0c;根据操作人跟操作时间是否相同来进行合并行数据 数据结构&#xff1a; 经过跟后端的同事商量&#xff0c;需要在每一行数据中返回rowSpanNum的值&#xff0c;前端在column中根据值来判断是否满足合并行&#xff08;没有合并行…

在Go项目中封装AES加解密客户端接口

1.摘要 在一个中型以上的项目中, 我们一般会在项目工程中开辟一个pkg文件夹用来存放一些基础工具接口,比如:数据库、中间件、加解密算法、基础协议等等。在这篇文章中, 我主要分享一下在基于Go语言的项目中, 加解密算法中如何封装一个通用的加解密接口, 并以使用比较广泛的AES…

day11力扣打卡

打卡记录 避免洪水泛滥&#xff08;贪心 Map Set&#xff09; 链接 将晴天的日期全部记录到 set 中。 使用 unordered_map 来记录每个湖泊上一次下雨的日期。 当下雨时&#xff0c;湖泊已经水满了时&#xff0c;查询到上次下雨的日期。 通过这个日期在晴天记录中查找对应的…

JS问题:项目中如何区分使用防抖或节流?

前端功能问题系列文章&#xff0c;点击上方合集↑ 序言 大家好&#xff0c;我是大澈&#xff01; 本文约2300字&#xff0c;整篇阅读大约需要6分钟。 本文主要内容分三部分&#xff0c;第一部分是需求分析&#xff0c;第二部分是实现步骤&#xff0c;第三部分是问题详解。 …

Android 发布 15 周年了!Google 员工说出了这些年的美好回忆

原文链接&#xff1a;https://blog.google/products/android/android-15th-anniversary-googler-highlights/ 作者&#xff1a;Sameer Samat, GM and VP of Android Ecosystem 翻译者&#xff1a;张拭心 https://shixin.blog.csdn.net/ 自从带有 Android Market&#xff08;现在…