<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>
这种行为的理由是什么?
答案 0 :(得分:14)
有几种协议:HTTP,HTTPS,FILE,SSH,SSL,FTP。此外,正如Jeremy所说,你的服务器上可能有一个文件,其中包含您在HREF中输入的文本的确切名称。
基本上,如果没有/
或协议,则假定没有协议的href中的任何文本都是相对路径。
答案 1 :(得分:9)
2016年3月2日更新:
只需对所有内容使用HTTPS,例如:https://www.example.com
Paul Irish recommends against using protocol-relative URLs,即//
,并建议使用https://
撰写所有链接 - 理由为:
现在,每个人都鼓励使用SSL,并且没有性能问题,此技术[协议相对URL]现在是一种反模式。如果您需要的资产在SSL上可用,则始终使用
https://
资产。允许通过HTTP进行请求的代码段打开了攻击的大门,就像最近的Github Man-on-side攻击一样。即使您的站点在HTTP上,请求HTTPS资产也始终是安全的,但反之则不然。
原帖:
正如其他答案所述,包括URI中的协议非常重要,否则您可能会遗漏URI的解释方式。您可以拥有一个名为&#34; www.something.com&#34;的名为的MP4视频文件。而不是&#34; video.mp4&#34;,或者客户端可能会尝试通过FTP访问您的网站,因为它猜错了协议。
正如Kolink在评论中指出的那样,您可以完全省略http:
,只使用//
,例如//www.example.com
。它会停止混合内容安全错误(&#34;此页面包含不安全的元素&#34;)。这样做是因为当用户通过HTTPS连接到当前页面时,浏览器将获取图像等资源,就像这些资产使用https://
一样。
答案 2 :(得分:3)
因为URL可以包含任意数量的协议:
浏览器不知道您的意思是ftp://www.stackoverflow.com,http://www.stackoverflow.com还是其他什么,所以您需要指定。