为什么我的外部链接呈现为内部链接?

时间:2013-08-03 17:12:35

标签: asp.net-mvc

我有一个表单,让人们可以在我的网站上输入各种链接,如:http,https和ftp。当有人输入“http:stackoverflow.com”,“https:stackoverflow.com”和“ftp:stackoverflow.com”并在这样的视图中呈现这些:

<ul>
    @foreach (var link in Model.Keyword.References)
    {
        <li>
            <a href="@link.Link" target="_blank">@link.Link</a>
        </li>
    }
</ul>

我得到以下输出:

  • HTTP:stackoverflow.com
  • HTTPS:stackoverflow.com
  • 的ftp:stackoverflow.com

这看起来不错,但当我悬停“http:stackoverflow.com”时,真正的链接是:“localhost:1973 / stackoverflow.com”。

当我将https和ftp链接悬停时,我得到了正确的输出:

当我通过表单提交时,我发现http链接需要两个“正斜杠”。所以不是“http:”而是“http://”。我想知道为什么https和ftp链接不需要这些额外的斜杠。我也想知道一个很好的解决方案,因为我不认为我应该强迫用户使用这些额外的斜杠。

2 个答案:

答案 0 :(得分:0)

始终需要URL中的斜杠。可能是您的浏览器对无效的网址进行了一些更正。尝试将https:stackoverflow.com放在浏览器的地址栏中,它会尝试在大多数浏览器中更正它。

答案 1 :(得分:0)

至于一个好的解决方案,我认为你应该只接受没有http://的域名。您可以在显示&#34;示例:&#39; www.somedomain.com&#39;&#34;的输入下面放置一些小文本,以便用户知道不需要前面的协议。

然后,您可以使用JQUERY / REGEX来验证和修剪某人可能错误添加的任何协议内容。