1

以下のように見える2つのアンカータグがあります

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

上記のアンカータグをクリックすると、正しい URL になりません ( Mydomainname/www.exx.com に移動したため)。しかし、同時にアンカータグの下が機能し、正しい url に移動します。

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

www は機能しないのに https は機能するのはなぜですか? そして、どうすればこの問題を解決できますか?

更新

  • URLはユーザーからテキストボックスに入力されます。どうすれば確認できますか?
4

1 に答える 1

4

「http://」を前に付けてみてください。

いえ

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

「www」はプロトコル/スキームではありません。HTTPS またはHTTPはプロトコルです。

絶対 URL の前には「スキーム」が必要です。詳細については、ウィキペディアの 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 に答える