Gibt es eine Möglichkeit ohne Javascript / serverseitiges Scripting, eine Verknüpfung zu einer anderen Portnummer auf derselben Box herzustellen, wenn ich den Hostnamen nicht kenne?
z.B:
<a href=":8080">Look at the other port</a>
(Dieses Beispiel funktioniert nicht, da es nur Folgendes behandelt: 8080 als Zeichenfolge, zu der ich navigieren möchte.)
$http_host
funktioniert die NGINX-Variable , z. B.:return 200 '<html><body><iframe id="ic" src="http://$http_host:2812/"></iframe></body></html>
In einer/etc/nginx/conf.d/strange.conf
Datei.Antworten:
Es wäre schön, wenn dies funktionieren könnte, und ich verstehe nicht, warum nicht, da dies
:
ein reserviertes Zeichen für die Porttrennung innerhalb der URI-Komponente ist, sodass der Browser dies realistisch als Port relativ zu dieser URL interpretieren könnte, aber leider nicht. ' t und es gibt keine Möglichkeit dafür.Sie benötigen daher Javascript, um dies zu tun.
In Firefox 4 getestet
Geige: http://jsfiddle.net/JtF39/79/
Update : Fehler beim Anhängen des Ports an das Ende der URL behoben und Unterstützung für relative und absolute URLs hinzugefügt, die an das Ende angehängt werden sollen:
quelle
http://myhost:8080/:8080
für erhaltenhref=":8080"
. Sie können diese Zeile unter `target.port = port [1];` hinzufügen, um dies zu beheben.target.href = target.href.replace("/:"+target.port, "");
(Es ist keine perfekte Lösung, da es ein Suchen / Ersetzen ist, aber es ist gut für einfache Fälle, in denen Sie sich keine Sorgen über die Port-Zeichenfolge in der URL machen.)Wie wäre es mit diesen:
Ändern Sie die Portnummer beim Klicken:
Wenn Sie jedoch mit der Maus über den Link fahren, wird der Link mit der neuen Portnummer nicht angezeigt. Erst wenn Sie darauf klicken, wird die Portnummer hinzugefügt. Wenn der Benutzer mit der rechten Maustaste auf den Link klickt und "Link Location kopieren" ausführt, erhält er die unveränderte URL ohne die Portnummer. Das ist also nicht ideal.
Hier ist eine Methode zum Ändern der URL direkt nach dem Laden der Seite. Wenn Sie also mit der Maus über den Link fahren oder "Link Location kopieren", wird die aktualisierte URL mit der Portnummer angezeigt:
quelle
<a href="#" onclick="javascript:event.target.port=8888">port 8888</a>
sollte technisch nicht funktionieren, gemäß w3 Spezifikationen .event.target
soll seinreadonly
. Aber es scheint für mich in Chrome und Firefox zu funktionieren!Sie können dies problemlos mit document.write tun. Die URL wird korrekt angezeigt, wenn Sie den Mauszeiger darüber halten. Mit dieser Methode benötigen Sie auch keine eindeutige ID und sie funktioniert mit Chrome, FireFox und IE. Da wir nur auf Variablen verweisen und keine externen Skripte laden, hat die Verwendung von document.write hier keine Auswirkungen auf die Leistung beim Laden von Seiten.
quelle
window.location.protocol
Teil einschließen müssen, sondern erst mit beginnen'//'
.document.write
dies heutzutage so gut wie nicht mehr zu empfehlen ist. Es wäre besser, so etwas zu tunmyElement.innerHTML = '...'
Ändern Sie die Portnummer beim Mouseover:
Dies ist eine Verbesserung von https://stackoverflow.com/a/13522508/1497139, die nicht den Nachteil hat, dass der Link nicht korrekt angezeigt wird.
quelle
Ohne JavaScript müssen Sie sich auf serverseitige Skripte verlassen. Wenn Sie beispielsweise ASP verwenden, können Sie beispielsweise ...
sollte arbeiten. Das genaue Format hängt jedoch von der verwendeten Technologie ab.
quelle
Nachdem ich damit gerungen hatte, stellte ich fest, dass SERVER_NAME eine reservierte Variable ist. Wenn Sie sich also auf einer Seite befinden (www.example.com:8080), sollten Sie in der Lage sein, den 8080 zu löschen und einen anderen Port aufzurufen. Zum Beispiel hat dieser geänderte Code nur für mich funktioniert und mich von einem beliebigen Basisport zu Port 8069 verschoben (ersetzen Sie Ihren Port nach Bedarf).
quelle
<a href="https://<?php print $_SERVER{'SERVER_NAME'}; ?>:8069">
Es ist besser, die URL von den Servervariablen abzurufen:
quelle
Kein kompliziertes Javascript erforderlich: Fügen Sie einfach einen Skriptknoten nach Ihrem Anker ein, rufen Sie den Knoten in Javascript ab und ändern Sie seine href- Eigenschaft mit der window.location.origin- Methode.
Die Eigenschaft id muss seitenweit eindeutig sein, daher möchten Sie möglicherweise eine andere Methode zum Abrufen von Knotenobjekten verwenden.
Getestet mit Apache und Firefox unter Linux.
quelle
http//localhost:8081
, den fehlenden Doppelpunkt zu beachten. Ich habe gerade den Protokollteil komplett entfernt, da Chrome sowieso http angenommen hat.window.location.hostname
stattdessen sein. Siehe developer.mozilla.org/en-US/docs/Web/API/LocationDiese Lösung sieht für mich sauberer aus
quelle
Basierend auf der Antwort von Gary Hole , ändert jedoch die URLs beim Laden der Seite anstatt beim Klicken.
Ich wollte die URL mit CSS anzeigen:
Also musste die href des Ankers konvertiert werden, um die tatsächliche URL zu enthalten, die besucht werden würde.
Rufen Sie beim Laden der Seite die obige Funktion auf.
oder in einer Zeile:
(Ich benutze
for
stattdessen,forEach
damit es in IE7 funktioniert.)quelle
Keine der Antworten, die ich mir angesehen habe (und ich werde sagen, ich habe nicht alle gelesen), passt die URL so an, dass ein mittlerer Klick oder "In neuem Tab öffnen" ordnungsgemäß funktioniert - nur ein regulärer Klick, um dem Link zu folgen. Ich habe mir die Antwort von Gary Greene geliehen und anstatt die URL im laufenden Betrieb anzupassen, können wir sie anpassen, wenn die Seite geladen wird:
quelle