2013-04-09 6 views
1

У меня есть два тега привязки для выглядеть, как показано нижеAnchor Тэг Не работает

<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 работается? И как я могу решить эту проблему?

Update:

  • URL-адрес вводится с пользователем в текстовом поле .so, как я могу проверить это?
+4

Попробуйте поставить «http: //» спереди. –

+1

В первом примере отсутствует _scheme_, поэтому его интерпретируют как ссылку на локальный ресурс, см. [* Url *] (http://en.wikipedia.org/wiki/Url) синтаксис в Википедии – andyb

+0

URL-адрес вводится пользователем в текстовом поле. Так как я могу это проверить? –

ответ

5

Попробуйте поставить «http: //» спереди.

I.e.

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

«www» не является протоколом/схемой. HTTPS или HTTP являются протоколами.

Абсолютные URL должны иметь перед собой «схему», см. details about URLs on Wikipedia.

С другой стороны, это также будет работать:

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

Update 1:

Поскольку вы прокомментируете, что ваш вход поступает от пользователя, позвольте мне добавить этот один:

enter image description here

(Хотя это относится к SQL injection, то же самое было бы верно для все пользовательский ввод).

Update 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)

+2

Ницца с префиксом '//' не знала об этом! :) –

+1

Я проверю это Бадди !!! –

+1

Спасибо, что так много за ваш ответ! –

Смежные вопросы