Unsere Webanwendung verfügt über eine Schaltfläche, die Daten an einen Server im lokalen Netzwerk senden soll, der wiederum etwas auf einen Drucker druckt.Wie kann eine Webseite eine Nachricht an das lokale Netzwerk senden?
Bisher war es einfach: Die Schaltfläche löste eine AJAX POST-Anforderung an http://printerserver/print.php
mit einem Token, diese Seite mit der Webanwendung verbunden, um das Token zu überprüfen und die Daten zu drucken und dann zu drucken.
Allerdings liefern wir jetzt unsere Webanwendung über HTTPs (und ich würde dafür lieber nicht zu HTTP zurückkehren) und neuere Versionen von Chrome und Firefox machen die Anfrage nicht mehr an die HTTP-Adresse, sie tun es nicht. t senden Sie sogar die Anfrage, um CORS-Header zu überprüfen.
Nun, was ist eine moderne Alternative zum Cross-Protokoll XHR? Haben Websockets das gleiche Problem? (Eine Google-Suche hat nicht deutlich gemacht, was hier aktuell ist.) Kann ich bereits TCP-Sockets verwenden? Ich würde auch lieber nicht zu GET-Anfragen wechseln, da die Aktion nicht idempotent ist und praktische Auswirkungen auf das Preloading und Caching haben könnte.
Ich kann die Anwendung auf dem Printer in irgendeiner Weise ändern (so konnte ich es mit NodeJS oder etwas ersetzen), aber ich kann der Benutzer Browser nicht ändern (ein selbst signiertes Zertifikat für Printer zum Beispiel vertrauen).
Nur ein Gedanke, aber haben Sie versucht, mit CURL Ihre Anfrage zu stellen? Da CURL eine eigene Sitzung erstellt, sollte es nicht davon beeinflusst werden, wie sich der Browser verhält. –
Ich dachte, das wäre klar aus der Frage: Maschine _printerserver_ und Browser des Benutzers sind in einem Netzwerk, der Webserver ist im Internet. – AndreKR
Wenn ich es richtig verstehe, versuchen Sie "http: //printerserver/print.php" von einer HTTPS-Website aufzurufen. Versuchen Sie, den Server "http: //printerserver/print.php" an Port 443 auszuführen - um HTTPS zu unterstützen, also werden Ihre Anrufe auf dem gleichen Protokoll sein. –