有人发来一条链接,问「这是网址还是 URL」。其实浏览器地址栏里那一整串就是 URL,中文叫统一资源定位符,英文全称 Uniform Resource Locator。网址是口语说法,URL 是它的正式名字。
一串 URL 由哪几段组成
拿 https://www.example.com:443/news/list.html?id=3&page=2#top 举例。https 是协议,告诉浏览器用什么规则通信;www.example.com 是主机名,也就是常说的域名;443 是端口,https 默认端口,一般省略不写;/news/list.html 是路径,指向服务器上的具体资源;?id=3&page=2 是查询参数,多个参数用 & 连接;#top 是锚点,只在页面内部跳转,不会发给服务器。
URL 和域名、URI 的区别
域名只是 URL 里的主机名部分,example.com 是域名,加上协议和路径才是完整 URL。URI 的范围更大,URL 是 URI 的一种,日常开发里两个词经常混着用,面试时才会抠这个区别。还有相对路径的说法,/images/logo.png 是相对当前域名根目录的地址,浏览器会自动补全前面的协议和域名。
中文和空格为什么会变成百分号
URL 规范里只允许一部分 ASCII 字符,中文、空格、部分符号要转成百分号编码。比如空格变成 %20,一个汉字一般变成三个 %XX。浏览器地址栏为了好看会显示中文,复制出来又变回编码,这是正常现象。自己拼 URL 时,参数值要用 encodeURIComponent 处理,不然 & 和 # 会把参数截断。
看链接时盯住主机名
钓鱼链接常见的套路是把真实域名塞进路径或者子域名,比如把 example.com 放在一长串字符中间,真正的域名在后面。看链接先找协议后面、第一个斜杠前面的那段,那才是网站身份。查询参数里也别放密码、身份证号,参数会留在浏览器历史、服务器日志和代理记录里。
记住结构就够了:协议、主机、端口、路径、参数、锚点。下次再看到一长串地址,从右往左拆,基本不会看晕。回到最初的问题,url指的是什么,答案就在浏览器顶部那行地址里。