绝对路径和相对路径是什么?浏览器如何补全资源地址

讲清绝对路径、相对路径、协议相对路径和根路径的区别,并结合浏览器解析规则说明资源地址是怎么被补全成完整 URL 的。

4 分钟阅读 绝对路径相对路径URL浏览器解析资源加载

先记住一个前提

只有完整 URL 才能真正发起网络请求。

浏览器看到的路径写法可以很多,但真正发给服务器的,必须是它自己补全后的完整地址。

所以你在页面里看到的 ./css/main.css/css/main.css//example.com/main.css,只是写法不同。 浏览器最终都会把它们整理成完整 URL,再去请求资源。

什么是绝对路径

绝对路径的特点是:它本身就能定位资源

常见写法有三种:

https://tc.xfei.tech/web/css/styles.css
//tc.xfei.tech/web/css/styles.css
/web/css/styles.css

这三种写法的共同点是:浏览器都有办法把它们补成完整 URL。

1)完整 URL

最完整的写法就是协议、域名、路径都齐全。

https://tc.xfei.tech/web/css/styles.css

这类地址可以直接请求,几乎不会产生歧义。

2)协议相对写法

//tc.xfei.tech/web/css/styles.css

这种写法省略了协议,浏览器会自动继承当前页面使用的协议。 如果当前页面是 HTTPS,最终就会补成 HTTPS。

3)根路径写法

/web/css/styles.css

这种写法从站点根目录开始找资源,和当前页面所在的子目录无关。

什么是相对路径

相对路径的特点是:它必须依赖当前页面地址来补全。

常见写法有:

css/styles.css
./css/styles.css
js/app.js
./logo.svg

它们本身不是完整地址,单独拿出来不能直接请求。 浏览器必须先知道“当前页面在哪个目录下”,然后才能把它补成完整 URL。

浏览器到底是相对谁

相对路径相对的不是“整个网站”,而是当前页面的 URL 所在目录

例如当前页面是:

https://tc.xfei.tech/web/index.html

那么:

css/styles.css
./css/styles.css

最终都会被补成:

https://tc.xfei.tech/web/css/styles.css

这也是为什么很多人第一次写路径会出错。 他以为路径是相对网站根目录,实际上它是相对当前页面目录。

浏览器如何补全路径

浏览器补全路径时,通常会按这几个步骤理解:

  1. 先拿到当前页面的完整地址。
  2. 找到当前页面所在目录。
  3. 把相对路径拼到这个目录后面。
  4. 得到最终可请求的完整 URL。

如果你把这个机制想明白了,很多“资源 404”问题就会立刻变得清晰。

在页面里最常见的几种资源引用

CSS

<link rel="stylesheet" href="./css/main.css" />

图片

<img src="./images/logo.svg" />

JavaScript

<script src="js/app.js"></script>

这些写法都很常见,而且都依赖浏览器补全。

如果路径写错了,最直接的结果就是资源加载失败。 所以分析页面时,除了看标签本身,还要看它引用资源的路径是否正确。

为什么绝对路径在分析页面时很省心

绝对路径最大的优点是稳定。

不管当前页面在哪个目录,只要路径是绝对的,浏览器请求的目标都不会变。 这对于静态站点、后台管理页、以及很多爬虫脚本里的资源定位都很有帮助。

相对路径虽然写起来短,但当页面目录结构变化时,出错概率更高。

路径分析时最容易混淆的点

1)/ 开头不等于相对路径

很多初学者会把 /css/main.css 看成“相对当前文件”的路径,其实不是。 它是从站点根目录开始的绝对路径。

2)./ 和不写 ./ 很接近

css/styles.css
./css/styles.css

这两种在多数场景下效果几乎一样,都是相对路径。

3)协议相对写法会继承当前协议

//tc.xfei.tech/web/css/styles.css

这个写法会直接继承页面协议,所以调试时要特别注意它最终是 http 还是 https。

一个很实用的排查方法

当你发现资源加载失败,可以按这个顺序排查:

  1. 先看路径是不是完整 URL。
  2. 如果不是,判断它是绝对路径还是相对路径。
  3. 如果是相对路径,确认当前页面目录是什么。
  4. 把路径手动补成完整 URL。
  5. 直接在浏览器里打开,看资源是否真的存在。

这套方法不仅适用于网页资源,也适用于你后面做爬虫时分析接口路径。

一句话总结

你可以这样记:

绝对路径自己就能指路,相对路径要靠当前页面补全。

只要你能把这个规则记牢,浏览器为什么能加载 CSS、图片和脚本,基本就能讲通了。

这篇内容和 浏览器输入 URL 后发生了什么?页面加载流程全解析 是一组,建议顺着一起看。

Practice

读完这一节,去靶场里验证一下。

去挑战广场练习