URL解析

目录

  • URI
  • URL
    • URL语法
    • 相对URL
    • URL中的转义
  • 现在与未来
    • PURL

URL出现之前,人们如果想访问网络中的资源,就需要使用不同的 应用程序,如共享文件需要使用 FTP程序,想要发送邮件必须使用 邮件程序,想要看新闻那只能使用 新闻阅读程序

我们不能期望用户能有拥有所有的应用程序并且能使用它们

而当URL推出之后,这些问题就不复存在了,URL应用程序提供了一种访问资源的手段
通过使用URLweb浏览器,人们再也不需要使用那些繁多且复杂的应用程序了

URI

在了解什么是URL是什么之前,我们需要知道什么是URI
URI是一种更通用的资源标识符,它是一个更加通用的概念,这个概念包含了URLURN
一个URL肯定是一个URI,但一个URI不一定是一个URL
虽然http规范将更通用的概念URI作为其资源标识符,但实际上,HTTP应用程序处理的只是URIURL子集

URL

URL全称为统一资源定位符,它通过资源在互联网中的位置来标识资源

URL语法

一个URL含有至多9个部分
URL
URL中最重要的就是schemehostpath三部分
我们接下来对这9个部分进行总结

组件描述默认值
scheme方案,也可以称作协议,方案规定了在访问此资源时所使用的协议,方案必须以一个字母开头,以://作为分隔,方案不区分大小写无,不可省略,必须填写
user访问方案访问时可能需要进行用户名验证,如ftp匿名 anonymous
password某些方案访问时可能需要进行密码验证每个浏览器默认值不相同
host即资源所存放的机器,可以使用主机名表示,也可以使用ip表示无,不可省略,必须填写
port服务器所监听的端口每个协议不同
path路径说明了资源存放在服务器的哪一个地方,路径是服务器定位资源时所需的信息无,不可省略,必须填写
params对于某些方案来说,只有以上内容是不够的,通过这个组件来输入参数,以此来补全信息
query与params类似,同样都是补全信息,但params是针对服务器程序设置的,这个是针对程序所提供的服务设置的
frag通常情况下,当我们得到一个html文档时,我们默认是停留在最顶端,如果这个html进行了分段,那我们就可以通过这个组件直接访问指定的分段

几乎没有URL是将这9段组件全部使用完全的

相对URL

到这里,我们所学的URL都是绝对URL,其实还有一种URL被称为相对URL
相对URL即在服务器内部定位资源的一种URL,它是一种确保了资源可移植性快捷方式,只要引用文件资源相对位置不变,就能保证资源能被正常访问
以下是一个相对URL的例子

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <a href="./a.html"></a>
</body>

</html>

浏览器解析到相对URL时,浏览器会先将其和基础URL合并补全为绝对URL,具体补全规则如下

  1. 资源中显式提供
    如果资源中显示的指定了基础URL则将使用它来转换绝对URL,如html文档中的base元素
  2. 使用引用资源的URL
    如果资源中没有显式的指定基础URL,则会使用引用文件中的URL来作为基础URL
  3. 没有基础URL
    如果一个资源既没有显式指定URL,或者引用文件也无法确定URL,那么它就有两种情况,一是相对URL本身是一个绝对URL,二是URL报错

基于以上规则,我们就能确定一个相对URL绝对URL

URL中的转义

除了URL本身就能表示多种协议外,在URL传递过程中也会经历多种协议,某些协议对于传送的字符没有要求,某些协议则会对不合法的字符进行过滤,为了确保URL能在互联网上安全准确的传输,我们必须使用一种安全的,通用的字符编码,现在全世界最通用的编码应当是ASCII码,它包含了数字字母以及一些常用符号,使用ASCII编码自然确保了URL的安全与准确,但是这个世界上不只有字母数字和一些符号,我如果需要传递一些非ASCII字符,我们该怎么办呢

URL提供的解决方案为将不安全的字符编码为安全的字符

这种编码机制就是通过一种转义表示法来表示不安全字符的,这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数

现在与未来

毫无疑问,URL是一种极强的资源标记工具,通过资源所处互联网中的位置来确定资源,但URL也有缺点,一旦资源被移走或更改了存储位置,原先的URL就失效了,为了解决这个问题IETF规定了一种新标准URN,但目前的URN还难以取代URL的地位

PURL

PURL统一永久资源定位符,它是URN的一种是实现方案,其原理是通过一个中间层来将URL资源相分离,从此URL不再指向资源的实际存储位置,不管资源存放到哪,当使用URL访问时通过中间层都能得到这个资源

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为认证云计算前景如何

互联网/移动互联网经历了高速发展的二十年&#xff0c;我们有幸一起见证了华为、阿里、腾讯、百度、字节跳动、京东、滴滴、拼多多等互联网公司的崛起&#xff0c;让普通技术人实现逆袭拿到高薪&#xff0c;也让小镇做题家们有了阶层跨越的机会。 但机会都是留给有准备的人&…

2024年内外贸一体化融合发展(长沙)交易会

2024年内外贸一体化融合发展&#xff08;长沙&#xff09;交易会 一、总体思路 充分发挥湖南作为全国内外贸一体化试点地区作用&#xff0c;坚持“政府主导、市场驱动、企业为主”的原则&#xff0c;以“助力双循环&#xff0c;拓展新市场&#xff0c;促进新消费”为主题&…

AI预测体彩排列3第2套算法实战化测试第1弹2024年4月22日第1次测试

从今天开始&#xff0c;开始新一轮的测试&#xff0c;本轮测试&#xff0c;以6码为基础&#xff0c;同步测试杀号情况&#xff0c;争取杀至4-5码。经过计算&#xff0c;假如5码命中&#xff0c;即每期125注&#xff0c;投入250元&#xff0c;十期共计2500元&#xff0c;则命中率…

OpenFeign远程调用

一、OpenFeign替代RestTemplate 1、需要引入的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>4.1.1</version> </dependency> 在引入依…

YMP实现Oracle迁移到YashanDB

迁移需求 ip地址 数据库信息 操作系统信息 源库 192.168.3.132 实例名topdh 用户密码TOPICIS/oracle 端口1521 Centos7.9 x86_64 目标库 192.168.3.175 实例名yasdb 用户密码topicist/opicis 端口1688 Centos7.9 x86_64 迁移前准备 YMP工具获取 根据实际需求向厂…

ArrayList与顺序表(1)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x…

GEE24:合肥市1986-2024年年均NDVI变化分析

代码如下&#xff1a; var roi ee.FeatureCollection("users/yipeizhao736/HefeiProvince"); Map.centerObject(roi); Map.addLayer(roi,{color:grey},roi); // Applies scaling factors. function applyScaleFactors(image) {var opticalBands image.select(SR_B…

如何使用渐变块创建自定义聊天机器人

如何使用渐变块创建自定义聊天机器人 文章目录 如何使用渐变块创建自定义聊天机器人一、介绍二、参考示例1、一个简单的聊天机器人演示2、将流式传输添加到您的聊天机器人3、喜欢/不喜欢聊天消息4、添加 Markdown、图像、音频或视频 一、介绍 **重要提示&#xff1a;**如果您刚…

FloodFill算法简介(用BFS、DFS算法解决)

FloodFill算法中文名&#xff1a;洪水灌溉 FloodFill通常是这样一类问题&#xff0c;如下图&#xff1a; 负数表示凹陷的土地&#xff0c;正数表示凸起的土地&#xff0c;发洪水/下雨会淹没凹陷的地方 通常会问这几种问题&#xff1a; 1.被淹没的区域有几块 2.被淹没的最大…

java的单元测试和反射

单元测试 就是针对最小的功能单元&#xff0c;编写测试代码对其进行正确性测试 Junit单元测试框架&#xff1a; 可以用来对方法进行测试 有点&#xff1a; 可以灵活的编写测试代码&#xff0c;可以针对某个方法进行测试&#xff0c;也支持一键完成对全部方法的自动发测试&a…

Linux中grep详解

一、grep基本介绍 全拼:Global search REgular expression and Print out the line. 从grep的全称中可以了解到&#xff0c;grep是一个可以利用”正则表达式”进行”全局搜索”的工具&#xff0c;grep会在文本文件中按照指定的正则进行全局搜索&#xff0c;并将搜索出的行打印出…

基于工程车辆/物流车辆/消防车辆远程通信的车队管理解决方案

交通运输对全球经济至关重要&#xff0c;特别是长途卡车在现今的供应链中发挥着重要作用。目前&#xff0c;货运物流面临许多挑战&#xff0c;包括不断上升的燃料价格和排放污染等问题。由于重型卡车的尺寸和载重量大&#xff0c;这意味着它们产生更多的二氧化碳排放足迹。在国…

java 溯本求源之基础(十八)之Monitoring--jmc

1.JMC概述 JMC全称Java Mission Control&#xff0c;集成了多个功能强大的组件&#xff0c;其中最核心的两部分是管理控制台和Java Flight Recorder。管理控制台允许开发者实时监控应用的运行状态&#xff0c;捕捉各种性能指标&#xff1b;而Java Flight Recorder则提供了一种高…

SQLite的DBSTAT 虚拟表(三十六)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite运行时可加载扩展(三十五&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1. 概述 DBSTAT 虚拟表是一个只读的同名虚拟表&#xff0c;返回 有关用于存储内容的磁盘空间量的信息 的 SQLite 数据库。 示例用例…

陈奂仁联手 The Sandbox 推出“Hamsterz Doodles”人物化身系列

全新人物化身系列结合艺术与实用性 开创元宇宙新篇章 著名亚洲唱作歌手兼香港电影金像奖得主陈奂仁携手 The Sandbox&#xff0c;兴奋地宣布推出新的元宇宙人物化身系列 —— Hamsterz Doodles 仓鼠涂鸦。 陈奂仁在 The Sandbox 推出 Hamsterz Doodles 系列&#xff0c;将艺术与…

3i平台体验性能加持,13600KF+B760M+撼与科技A770 TITAN装机体验

在2022年&#xff0c;intel重启显卡线&#xff0c;带来了多款性价比十分不错的显卡。而近段时间&#xff0c;又有传言说intel第二代产品e即将面世&#xff0c;甚至已经有数款Battlemage GPU曝光&#xff0c;让不少intel忠实粉丝直呼期待&#xff0c;或许在今年年底&#xff0c;…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC&#xff08;Tencent RTC&#xff09;腾讯实时音视频&#xff0c;源自于 QQ 音视频团队&#xff0c;是基于 QQ 音视频多年来的音视频技术积累&#xff0c;位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

AI大模型探索之路-实战篇2:基于CVP架构-企业级知识库实战落地

目录 前言 一、概述 二、本地知识库需求分析 1. 知识库场景分析 2. 知识库应用特点 3. 知识库核心功能 三、本地知识库架构设计 1. RAG架构分析 2. 大模型方案选型 3. 应用技术架构选型 4. 向量数据库选型 5. 模型选型 三、本地知识库RAG评估 四、本地知识库代码落地 1. 文件…

leetcode最大间距(桶排序+Python)

虽然直接排完序&#xff0c;再求最大差值更快&#xff0c;这里我们还是学一下桶排序。 桶排序主要维护一个bucket&#xff0c;初始bucket【i】 0&#xff0c;遍历nums&#xff0c;当i存在时&#xff0c;令bucket【i】 1&#xff0c;表示存在。遍历完nums&#xff0c;bucket中有…