![](/img/trans.png)
[英]Why does anchor tag remove tab character in URL specified inside href attribute?
[英]Why does an anchor tag's href values need http:// preprended to the URL?
<a href="www.stackoverflow.com" target="_blank">click here</a>
单击站点HTML页面上的上述链接将尝试将用户带到
<site>/index.html/www.stackoverflow.com
如果以下工作正常
<a href="http://www.stackoverflow.com" target="_blank">click here</a>
这种行为的理由是什么?
有几种协议:HTTP,HTTPS,FILE,SSH,SSL,FTP。 此外,正如Jeremy所提到的,您很可能在服务器上有一个文件,其中包含您在HREF中输入的文本的确切名称。
基本上,如果没有/
或协议,则假定没有协议的href中的任何文本都是相对路径。
2016年3月2日更新:
只需使用HTTPS即可,例如: https://www.example.com
: https://www.example.com
Paul Irish建议不要使用协议相对URL ,即//
,并建议使用https://
编写所有链接 - 理由是:
现在,每个人都鼓励使用SSL,并且没有性能问题, 这种技术[协议相对URL]现在是一种反模式 。 如果您需要的资产在SSL上可用,则始终使用
https://
asset。允许通过HTTP请求代码段打开了攻击的大门,就像最近的Github Man-on-side攻击一样。 即使您的站点在HTTP上,请求HTTPS资产也始终是安全的,但反之则不然。
原帖:
正如其他答案所述,包括URI中的协议非常重要,否则您可能会遗漏URI的解释方式。 您可以将MP4视频文件命名为“www.something.com”而不是“video.mp4”,或者客户端可能尝试通过FTP访问您的网站,因为它猜错了协议。
正如Kolink在评论中指出的那样,您可以完全省略http:
并使用//
,例如//www.example.com
。 它会停止混合内容安全错误(“此页面包含不安全的元素”)。 这样做是因为当用户通过HTTPS连接到当前页面时,浏览器将获取图像等资源,就像这些资产使用https://
。
如果您不使用协议(http,https,ftp,mailto等等),则链接将相对于当前请求URI。 它与href前缀为./表示此目录相同 。
浏览器地址栏是http://domain.com/questions/
<a href="www.stackoverflow.com"
成为domain.com/questions/www.stackoverflow.com
<a href="./www.stackoverflow.com
”成为domain.com/questions/www.stackoverflow.com
如果你的前缀是/你将从域根<a href="www.stackoverflow.com"
变为domain.com/www.stackoverflow.com
通过添加http://(或任何其他协议),浏览器知道此链接意味着在当前页面的外部。 它是一个绝对路径,因为它包含协议和完整路径信息。
<a href="http://www.stackoverflow.com"
成为http://www.stackoverflow.com
链接也可以是协议相关的 ,以便轻松避免混合内容安全性错误。
此外,如果您在(*它必须是绝对URL)中指定<base href="http://domain.com/dir/">
,那么href =和src =中的所有非协议前缀URL都将基于在该基本URL而不是当前页面上。
假设http://domain.com/questions/
的相同地址栏和上面的<base
set。
<img src="file.jpg"
成为http://domain.com/dir/file.jpg
<a href="www.stackoverflow.com"
<img src="file.jpg"
<a href="www.stackoverflow.com"
成为http://domain.com/dir/www.stacoverflow.com
因为URL可以有任意数量的协议:
浏览器不知道你的意思是ftp : //www.stackoverflow.com,http: //ststoverflow.com等等,所以你需要指定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.