Existe-t-il un moyen sans Javascript / script côté serveur de se lier à un numéro de port différent sur la même boîte, si je ne connais pas le nom d'hôte?
par exemple:
<a href=":8080">Look at the other port</a>
(Cet exemple ne fonctionne pas car il traitera simplement: 8080 comme une chaîne vers laquelle je souhaite accéder)
$http_host
var NGINX fonctionne, par exemple:return 200 '<html><body><iframe id="ic" src="http://$http_host:2812/"></iframe></body></html>
c'est-à-dire dans un/etc/nginx/conf.d/strange.conf
fichier.Réponses:
Ce serait bien si cela pouvait fonctionner, et je ne vois pas pourquoi car il
:
s'agit d'un caractère réservé pour la séparation des ports à l'intérieur du composant URI, de sorte que le navigateur pourrait interpréter cela de manière réaliste comme un port par rapport à cette URL, mais malheureusement, ce n'est pas le cas. t et il n'y a aucun moyen pour cela de le faire.Vous aurez donc besoin de Javascript pour cela;
Testé dans Firefox 4
Violon: http://jsfiddle.net/JtF39/79/
Mise à jour : Bug corrigé pour l'ajout du port à la fin de l'url et également ajouté la prise en charge des URL relatives et absolues à ajouter à la fin:
la source
http://myhost:8080/:8080
pourhref=":8080"
. Vous pouvez ajouter cette ligne sous `target.port = port [1];` pour résoudre ce problème.target.href = target.href.replace("/:"+target.port, "");
(Ce n'est pas une solution parfaite, car c'est une recherche / remplacement, mais c'est bon pour les cas simples où vous n'êtes pas inquiet de la présence de la chaîne de port dans l'URL.)Que penses-tu de ceux-ci:
Modifiez le numéro de port au clic:
Cependant, si vous passez votre souris sur le lien, il n'affiche pas le lien avec le nouveau numéro de port inclus. Ce n'est que lorsque vous cliquez dessus qu'il ajoute le numéro de port. De plus, si l'utilisateur clique avec le bouton droit sur le lien et fait "Copier l'emplacement du lien", il obtient l'URL non modifiée sans le numéro de port. Ce n'est donc pas idéal.
Voici une méthode pour modifier l'URL juste après le chargement de la page, donc en survolant le lien ou en faisant "Copier l'emplacement du lien", vous obtiendrez l'URL mise à jour avec le numéro de port:
la source
<a href="#" onclick="javascript:event.target.port=8888">port 8888</a>
devrait techniquement ne pas fonctionner, selon les spécifications de w3 .event.target
est censé êtrereadonly
. Mais cela semble fonctionner pour moi dans Chrome et Firefox!Vous pouvez le faire facilement en utilisant document.write et l'URL s'affichera correctement lorsque vous le survolerez. Vous n'avez pas non plus besoin d'un identifiant unique en utilisant cette méthode et cela fonctionne avec Chrome, FireFox et IE. Étant donné que nous référençons uniquement des variables et ne chargeons aucun script externe, l'utilisation de document.write ici n'aura pas d'incidence sur les performances de chargement de la page.
la source
window.location.protocol
partie, tout en commençant par'//'
.document.write
c'est à peu près universellement déconseillé de nos jours. Il serait préférable de faire quelque chose commemyElement.innerHTML = '...'
Modifiez le numéro de port au survol de la souris:
Il s'agit d'une amélioration de https://stackoverflow.com/a/13522508/1497139 qui n'a pas l'inconvénient de ne pas afficher le lien correctement.
la source
Sans JavaScript, vous devrez vous fier à certains scripts côté serveur. Par exemple, si vous utilisez ASP, quelque chose comme ...
devrait marcher. Cependant, le format exact dépendra de la technologie que vous utilisez.
la source
Après avoir lutté avec cela, j'ai trouvé en fait que SERVER_NAME est une variable réservée. Donc, si vous êtes sur la page (www.example.com:8080), vous devriez pouvoir supprimer le 8080 et invoquer un autre port. Par exemple, ce code modifié a fonctionné pour moi et me déplace de n'importe quel port de base vers le port 8069 (remplacez votre port si nécessaire)
la source
<a href="https://<?php print $_SERVER{'SERVER_NAME'}; ?>:8069">
Il est préférable d'obtenir l'URL des variables du serveur:
la source
Pas besoin de javascript compliqué: insérez simplement un nœud de script après votre ancre, puis récupérez le nœud en javascript, et modifiez sa propriété href avec la méthode window.location.origin .
La propriété id doit être unique à l'échelle de la page, vous pouvez donc utiliser une autre méthode pour récupérer les objets de nœud.
Testé avec apache et Firefox sous Linux.
la source
http//localhost:8081
, notez les deux points manquants. Je viens de supprimer complètement la partie protocole puisque Chrome a de toute façon assumé http.window.location.hostname
place. Voir developer.mozilla.org/en-US/docs/Web/API/LocationCette solution me paraît plus propre
la source
Basé sur la réponse de Gary Hole , mais change les URL lors du chargement de la page au lieu d'un clic.
Je voulais afficher l'url en utilisant css:
J'avais donc besoin que le href de l'ancre soit converti pour contenir l'URL réelle qui serait visitée.
Appelez la fonction ci-dessus lors du chargement de la page.
ou sur une seule ligne:
(J'utilise à la
for
place deforEach
cela fonctionne dans IE7.)la source
Aucune des réponses que j'ai regardées (et je dirai que je ne les ai pas toutes lues) n'ajuste l'URL de telle sorte qu'un clic du milieu ou «ouvrir dans un nouvel onglet» fonctionne correctement - seulement un clic régulier pour suivre le lien. J'ai emprunté la réponse de Gary Greene, et au lieu d'ajuster l'URL à la volée, nous pouvons l'ajuster lors du chargement de la page:
la source