相对URL拼接为绝对URL的过程
2024-10-10 13:45:23
URL有两种方式:绝对的和相对的. 绝对URL中包含有访问资源的所需的全部信息
举一个例子:
<HTML>
<HEAD><TITLE>Joe's Tools</TITLE></HEAD>
<BODY>
<H1>Tools Page</H1>
<H2>Hammers</H2>
<p>Joe's Hardware online has the largest selection of
<A HREF="./hammers.html">
hammers
</A> on earth
</p>
</BODY>
</HTML>
其中,基础URL为:http://www.joes-hardware.com/tools.html
资源./hammers.html即相对的URL,它被解析为:基础URL+相对URL(后面有讲具体的解析规则),
即http://www.joes-hardware.com/hammers.html
基础URL
转换处理的第一步就是找到基础URL. 基础URL是相对论URL的参考点. 基础URL可以来自以下几个不同的地方
在资源中显式提供
有些资源会显式指定基础课URL, 如, html中可以用标记<BASE>, 通过它来转换那个HTML文档中的所有相对URL
封闭资源的基础URL
如果在一个没有显式指定基础URL的资源中发现一个相对URL, 可以将它所属的资源的URL作为基础
没有基础URL
如果没有基础的URL, 这通常意味着你有一个绝对的URL,但有时可能只是一个不完整或损坏的URL
解析相对引用
要将一个相对URL转换为绝对URL,要将其先划分为一个个组件. 把URL划分为组件后,就可以用以下的算法完成转换了(图处来自《HTTP权威指南》)
我们对上面的./hammers.html使用图中描述的算法
- 路径为./hammers.html, 基础URL为http://www.joes-hardware.com/tools.html
- 方案(scheme)为空,沿着图左边处理,继承基础URL方案
- 至少一个组件非空,一直处理到底端,继承主机和端口组件
- 将来自相对URL(路径:./harmers.html)的组件与继承的组件合并,得到新的绝对URL:http://ww.joes-hardware.com/hammers.html
最新文章
- PARENT VIEW INVALIDATE
- 在map中根据value获取key
- C++流格式控制符的使用【来自网络】
- An endpoint configuration section for contract ";serviceReferenc.service"; could not be loaded
- 用maven骨架生成项目速度慢的问题
- Oracle 11g 环境,使用utl_smtp创建一个存储过程来发送邮件
- 一个可以直接使用的MsgBox基于form居中API
- UVa10723 - Cyborg Genes
- Vue.js-05:第五章 - 计算属性与监听器
- [日常] imap协议读取邮件
- php实现多进程和关闭进程
- 连接HTTP服务器
- fiddler电脑抓包和手机抓包
- css单位分析、颜色设置与调色板
- 用老毛桃U盘安装:[3]Ghost版Win7系统
- Flask系列07--Flask中的CBV, 蓝图的CBV
- RocketMQ 概述
- C#开发Unity游戏教程之游戏对象的行为逻辑方法
- Mysql导入大容量SQL文件数据问题
- 关于div一侧固定,另一侧自适应