1

我有两个锚标记,如下所示

<a href="www.exx.com" target="_blank">
            AnnualBudget</a>

当我单击上面的 Anchor 标记时,它的 URL 不正确(因为它已转到 Mydomainname/www.exx.com)。但同时下面的锚标记正在工作并转到正确的 url 。

<a href="https://www.exx.com" target="_blank">
            AnnualBudget</a>

为什么 www 不起作用但 https 起作用?我该如何解决这个问题?

更新

  • 网址是从用户在文本框中输入的。那么我该如何检查呢?
4

1 回答 1

4

尝试在前面放一个“http://”。

IE

<a href="http://www.exx.com" target="_blank">AnnualBudget</a>

“www”不是协议/方案。HTTPS 或HTTP是协议。

绝对 URL 必须在前面有一个“方案”,请参阅Wikipedia 上有关 URL 的详细信息

或者,这也可以:

<a href="//www.exx.com" target="_blank">AnnualBudget</a>

更新1:

既然您评论说您的输入来自用户,让我添加这个:

在此处输入图像描述

(虽然这指的是SQL 注入,但对于所有用户输入也是如此)。

更新 2:

要检查绝对 URL 的输入,请执行以下操作:

// Read from user input, e.g. (WebForms syntax!):
string my = MyTextBox.Text.Trim();

// Do some checking (this has be done much more thoroughly in real-life!)
if ( !my.StartsWith("http://") && !my.StartsWith("https://") )
{
    my = "http://" + my;
}

// Do something with "my", e.g. (again, WebForms syntax only):
MyHyperLink.NavigateUrl = my;

(请注意,我不是 MVC 专家,上面的伪代码使用了 WebForms 语法)

于 2013-04-09T08:21:00.047 回答