Pourquoi un point d'ancrage de la balise href valeurs nécessité http:// preprended à l'URL?
<a href="www.stackoverflow.com" target="_blank">click here</a>
Cliquant sur le lien ci-dessus sur un site de la page HTML voudrais essayer de le prendre à l'utilisateur de
<site>/index.html/www.stackoverflow.com
Où que suivant fonctionne très bien
<a href="http://www.stackoverflow.com" target="_blank">click here</a>
Quelle est la justification de ce comportement?
Que faire si vous avez un fichier nommé
www.stackoverflow.com
sur votre serveur?http://
spécifie le protocole. Il n'est pas implicite, même si les navigateurs web ont essayé de le rendre plus facile pour nous en ajoutant automatiquement.
OriginalL'auteur chandmk | 2012-01-25
Vous devez vous connecter pour publier un commentaire.
Il existe plusieurs protocoles: HTTP, HTTPS, FICHIER, SSH, SSL, FTP. En outre, comme Jeremy mentionné, il est tout à fait possible que vous avez un fichier sur votre serveur avec le nom exact du texte que vous saisissez dans le HREF.
Fondamentalement, n'importe quel texte dans le href, sans un protocole est supposé être un chemin relatif si il n'y a pas de
/
ou de protocole.//
pour spécifier un chemin relatif au protocole actuel 😉Bon point. Rarement vu, mais digne de mention pour la perfection 🙂
Avoir un
/
est encore un chemin d'accès relatif, trop. Juste que c'est par rapport au domaine, et non le dossier. Si vous voulez être approfondie, qu'un seul chemin qui spécifie le protocole est trop absolue. ^_^Si vous souhaitez obtenir des techniques, il y a plein de chemins, des chemins relatifs et absolus des chemins. Ceux commençant par
/
sont les chemins d'accès complets, mais je suis d'accord qu'ils sont du domaine 🙂 je suppose que les chemins absolus sont vraiment les seules où, peu importe comment vous le regardez, il est seulement appelé par un nom.Quelque chose comme ça, de toute façon. Suis-je vraiment ce ennuyer? Je devrais être à travailler!
OriginalL'auteur jmort253
Mise à jour 3/2/2016:
Suffit d'utiliser HTTPS pour tout, par exemple:
https://www.example.com
Paul Irish recommande contre l'utilisation d'Url relatives de protocole, c'est à dire
//
, et recommande d'écrire toutes les liens à l'aide dehttps://
- la raison d'être:Original post:
Comme d'autres réponses ont indiqué, y compris les protocoles dans les Uri est important parce que sinon vous laisser la chance de la façon dont l'URI est interprété. Vous pourriez avoir un fichier vidéo MP4 littéralement nommé "www.something.com" au lieu de "vidéo.mp4", ou qu'un client peut essayer d'accéder à votre site web via FTP parce qu'il a deviné le protocole de mal.
Comme Kolink souligné dans un commentaire, vous pouvez omettre le
http:
entièrement et il suffit d'utiliser//
, par exemple,//www.example.com
. Il s'arrête mixte de sécurité de contenu erreurs ("cette page contient des éléments d'insécurité"). Il le fait parce que browers ira chercher les éléments tels que des images, comme si ces biens ont été à l'aide dehttps://
lorsque l'utilisateur est connecté à la page en cours via le protocole HTTPS.OriginalL'auteur iono
Si vous abandonnez le protocole (http, https, ftp, mailto, etc...), le lien est par rapport à la demande actuelle d'URI. C'est le même que le préfixe href ./sens ce répertoire.
barre d'adresse du navigateur est
http://domain.com/questions/
<a href="www.stackoverflow.com"
devientdomain.com/questions/www.stackoverflow.com
<a href="./www.stackoverflow.com
" devientdomain.com/questions/www.stackoverflow.com
Si vous préfixe avec un /vous aurez à partir de la racine du domaine
<a href="www.stackoverflow.com"
devientdomain.com/www.stackoverflow.com
Par l'ajout de la http://(ou tout autre protocole) les navigateurs sait ce lien est destiné à être externe à la page en cours. C'est un chemin absolu, car il contient le protocole et le chemin d'accès complet de l'information.
<a href="http://www.stackoverflow.com"
devienthttp://www.stackoverflow.com
Le lien peut aussi être protocole relatif afin d'éviter facilement du contenu mixte des erreurs de sécurité.
En outre, si vous spécifiez le
<base href="http://domain.com/dir/">
dans l' (* il doit être une URL absolue), Alors tous les non-protocole préfixe d'Url dans les href= src= sera basée sur l'URL de base au lieu de la page en cours.en supposant que la même barre d'adresse de
http://domain.com/questions/
et la<base
définie ci-dessus.<img src="file.jpg"
devienthttp://domain.com/dir/file.jpg
<a href="www.stackoverflow.com"
devienthttp://domain.com/dir/www.stacoverflow.com
OriginalL'auteur Kennith Nichol
Parce que l'URL pourrait avoir n'importe quel nombre de protocoles:
Le navigateur ne sais pas si tu veux dire ftp://www.stackoverflow.com, http://www.stackoverflow.com ou que ce soit, de sorte que vous devez spécifier.
OriginalL'auteur Brill Pappin