Website nach RESTful GET Anfrage Serverantwort verwerfen/blocken

McFritte

Lt. Commander
Registriert
Apr. 2014
Beiträge
1.183
Ich nutze auf den Zweit- und Drittrechner ein kleines Tool namens GetAdmin.
Das Tool starten einen HTTP Server, der auf RESTful GET Anfragen reagiert und vorher hinterlegte Befehle ausführt.

http://192.168.1.10:8585/?cmd=ABC startet z.B. ein eingetragenes Programm mit der Bezeichnung ABC
http://192.168.1.10:8585/?key=VOLUP erhöht z.B. die Lautstärke usw.

Ich wollte mir jetzt nur eine minimale, lokale Website mit ein paar Buttons erstellen. Blöderweise kommt nach jeder Anfrage natürlich eine Statusmeldung vom Server zurück und öffnet dann immer einen neuen Tab.
Bei externen Seiten kann ich das mit AdGuard blockieren, leider funktioniert das im lokalen Netz nicht. Mit zusätzlichen Browser-Addons bin ich auch nicht weiter gekommen. Zwar wird dann die Serverantwort blockiert, aber ein Tab wird trotzdem geöffnet. Nur halt mit der Mitteilung, das die entsprechende Seite blockiert wurde.

Gibt es mit JavaScript eine Möglichkeit diese geöffneten Tabs automatisch gleich wieder schließen zu lassen oder halt die Anfrage so abzuschicken, das der Browser auf die Rückantwort gar nicht reagiert und einen neuen Tab öffnet?
 
Ich weiss ja nicht was du programmiert hast, aber wenn du einen HTML Button machst (z.B. https://www.w3schools.com/tags/att_button_formaction.asp) dann bist du selbst für die Behandlung der Antwort vom Server zuständig. Da öffnen sich nicht auf magische Weise Tabs. Wenn du nichts machst, wird die Antwort einfach ignoriert.
 
  • Gefällt mir
Reaktionen: zenokortin und mibbio
Eben, wenn sich da jedes Mal ein neuer Tab öffnest, hast du das irgendwie so im Code programmiert. Von sich aus erzeugen weder der Request noch die Antwort vom Server irgendwelche Tabs.

Wäre also interessant zu erfahren, wie der Code deiner Webseite aussieht.
 
"GetAdmin" spuckt auf Suchmaschinen sehr viel aus. Wenn Werkzeuge so uneindeutige Namen habe, link doch bitte auf die Software, die du nutzt.

Wenn du Quelltext geschrieben hast, zeige diesen!

Und was mich verwirrt, deine GET Anfragen sollen den Zustand vom Server (global) ändern. In deinem Beispiel die Lautstärke von irgendwas, was der Server bedient. Das widerspricht so ein bisschen den Rahmenbedingungen von REST?!
 
Piktogramm schrieb:
"GetAdmin" spuckt auf Suchmaschinen sehr viel aus. Wenn Werkzeuge so uneindeutige Namen habe, link doch bitte auf die Software, die du nutzt.
Sorry, da habe ich verpennt einen Link mit reinzupacken. Das Tool kommt von einem russischen oder ukrainischen Programmierer. Und wird gerne in Zusammenarbeit mit IoBroker (Hausautomatisierung) genutzt.
Originalquelle (russisch?): https://blog.instalator.ru/archives/47
Etwas in Deutsch in Zusammenhang mit IoBroker: https://forum.iobroker.net/topic/1570/windows-steuerung

Piktogramm schrieb:
Wenn du Quelltext geschrieben hast, zeige diesen!
Schreiben? Wäre schön, wenn ich das könnte. Das war erstmal ganz simpel eine Seite mit einem Button mit RocketCake (ein Website Editor) erstellt.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="RocketCake">
<title></title>
<link rel="stylesheet" type="text/css" href="index_html.css">
</head>
<body>
<div class="textstyle1">
<a href="javascript:window.open('http://192.168.0.102:8585/?cmd=Loop')" target="_blank" style="text-decoration:none"><div id="button_49364a9">
<div class="vcenterstyle1"><div class="vcenterstyle2"> <div class="textstyle2">
<span class="textstyle3">Text hier bearbeiten</span>
</div>
<div class="textstyle1">
</div>
</div></div>
</div></a>
</div>
</body>
</html>


Das diese Zeile (<a href="javascript:window.open('http://192.168.0.102:8585/?cmd=Loop').....) genau das macht was sie soll, nämlich ein neues Fenster (bzw. nach den Browsereinstellungen einen neuen Tab) öffnen, ist mir klar. Ich suche halt nach einen Ersatz für: window.open um GetAdmin anzusprechen ohne halt eine Antwort zu erhalten oder diese Antwort direkt ins Nirvana zu schicken. AdGuard kann das irgendwie rausfiltern, funktioniert leider nicht im lokalen Netz.
 
Warum extra ein hidden iframe als Workaround, wenn man den Request einfach code-seitig abschicken kann.

Das, was @heulendoch verlinkt hat (XMLHttpRequest) genau dafür gedacht, was der TE erreichen will.
 
Manb braucht doch gar keine Javascript...hab doch oben schon den Link gepostet. Aber wenn du es mit Javascript unbedingt machen willst, wieso packst du das in eine window.open mit target _blank funktion? Das macht genau das was du sagst - ein neues leeres Tab auf.
Mit der Antwort vom Server hat das nichts zu tun.
 
  • Gefällt mir
Reaktionen: zenokortin
Mit iframe oder eben auch window.open ist das aber irgendwie "von Hinten durch die Brust ins Auge". Das simuliert ja quasi die Eingabe des Request-URL in die Adresszeile vom Browser, worauf der Browser dann im Hintergrund die Anfrage an den Server erstellt und abschickt.
Das ist es schon einfacher und sauberer, die Anfrage direkt per Code zu schicken ohne sich um ungewollte Nebenwirkungen kümmern zu müssen.
 
heulendoch schrieb:
Ok, da war des Rätsels Lösung :jumpin:

Einfach window.open mit fetch ersetzt.
Also: <a href="javascript:fetch('http://192.168.0.102:8585/?cmd=Loop')" style="text-decoration:none">

fetch war genau das, was ich gesucht habe. Damit funktioniert es wie gewünscht. Ich bin zwar schon vor ein paar Tagen auf den Befehl gestoßen, hatte aber wohl noch einen anderen Fehler gemacht. Vorher hatte es nicht funktioniert.

Fettes Dankeschön an alle
Ergänzung ()

floq0r schrieb:
Weil es die fachlichen Fähigkeiten des TE vielleicht übersteigt
Was Programmierung angeht, übersteigt so ziemlich alles meine Fähigkeiten :p
 
Zuletzt bearbeitet:
Zurück
Oben