从那以后,这对我来说一直是一个亟待解决的问题,我认为在论坛上讨论这个问题很有意思。正如大多数人所知,在网站中我们包括锚链接,样式表,脚本文件(javascript)和图像。
对于锚链接,我们使用<a href="..." />
形式
对于样式表,我们可以使用<link rel="stylesheet" type="text/css" href="..." />
形式
对于javascript,我们可能会使用<script src="..." />
对于图片,我们使用<img src="..." />
所以,问题是:
我们如何知道链接指针中的内容(即替换每个示例中的......)是本地文件还是外部实体?
为了说清楚,我可以说我创建了一个名为“ashish.com”的本地文件。现在,我的目的是创建一个链接,以便任何点击它的人都可以下载它。所以,我的代码就是:
<a href="ashish.com">Download It</a>
但这使得它含糊不清。我也可以指一个名为“ashish.com”的网站 那么,计算机如何神奇地知道我的意思呢?或者甚至知道这个?在这种情况下会发生什么?
答案 0 :(得分:0)
绝对URI以URI方案名称为前缀。例如,http://example.com/hello.jpg的URI方案名称为http
,而ftp://example.com/world.jpg的URI方案名称为ftp
。
相对URI没有前缀。诸如example.com/hello.jpg
之类的URI将被限定为相对URI。
这意味着,当您在页面上拥有:
时<a href="example.com">Magic</a>
绝对位置取决于实际页面的位置。如果您在本地查看页面,其URI将类似于:
file:///C:/Sample/index.html
所以链接将指向:
file:///C:/Sample/example.com
如果页面托管在网站上并通过浏览器查看,则其位置可能类似于:
https://sample.example.com/index.html
所以链接指向:
https://sample.example.com/example.com
备注地址栏中的URI方案:
在访问网站时,很容易对大多数浏览器的UI行为产生混淆。实际上,在浏览器中,当您在地址栏中输入google.com
时,浏览器会打开Google网站。在大多数情况下,您甚至不会在地址栏中看到http://
。此行为专门为用户完成,以便他们每次想要访问网站时都避免键入URI方案。在某些网站(例如Google)上自动重定向到https://
会让用户更轻松。
关于HTTP / HTTPS的评论:
有一种特殊情况,绝对链接不包含URI方案。链接如:
//static.example.com/logo.png
将从浏览器的主要部分获得特殊处理:页面的实际URI方案将被重用。
这特别有用,例如,当使用HTTP和HTTPS访问同一网站时。在第一种情况下,浏览器将访问:
http://static.example.com/logo.png
而在第二个中,它将切换到CDN的HTTPS版本:
https://static.example.com/logo.png