2013-04-09 9 views
1

J'ai un tag deux d'ancrage pour ressembler à ceciTag Anchor ne fonctionne pas

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

Lorsque je clique sur le tag ci-dessus Anchor, Ce ne est pas allé URL correcte (Car il est allé MyDomainName/www.exx.com). Mais en même temps sous le tag d'ancrage fonctionne et aller à l'URL correcte.

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

Pourquoi www ne fonctionnait mais https est travaillé? Et comment puis-je résoudre ce problème?

Mise à jour:

  • L'URL est entré d'un utilisateur dans le champ de saisie .Donc comment puis-je vérifier?
+4

Essayez de mettre un "http: //" devant. –

+1

Le premier exemple manque le _scheme_ est donc interprété comme un lien vers une ressource locale voir la syntaxe [* Url *] (http://en.wikipedia.org/wiki/Url) sur Wikipedia – andyb

+0

L'URL est entrée par l'utilisateur dans la zone de texte. Alors comment puis-je le vérifier? –

Répondre

5

Essayez de mettre un "http: //" devant.

I.e.

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

"www" n'est pas un protocole/schéma. HTTPS ou HTTP sont des protocoles.

Les URL absolues doivent avoir un "schéma" à l'avant, voir details about URLs on Wikipedia.

Sinon, cela fonctionnerait aussi:

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

Mise à jour 1:

Puisque vous commentiez que votre entrée est de l'utilisateur, laissez-moi ajouter celui-ci:

enter image description here

(Bien que cela se réfère à SQL injection, il en serait de même pour all entrée utilisateur).

Mise à jour 2:

Pour vérifier l'entrée d'une URL absolue, faire quelque chose comme:

// 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; 

(S'il vous plaît noter que je ne suis pas expert MVC, les utilisations pseudo-code ci-dessus Syntaxe WebForms à la place)

+2

Nice avec le préfixe '//', n'était pas au courant de ça! :) –

+1

Je vais vérifier Buddy !!! –

+1

Merci beaucoup pour votre réponse! –