2013-11-28 3 views
8

Ich versuche, eine Webseite zu erstellen, die eine Verbindung zu einem Client-lokalen WebSocket-Server herstellen kann. Die Idee ist, den JavaScript-Client, der im Browser ausgeführt wird, als eine Art Proxy zu verwenden, um die Kommunikation zwischen dem Remote-Webserver und der lokal installierten Clientanwendung, die den WebSocket-Dienst implementiert, zu ermöglichen.Wie kann eine über https geladene Webseite mit einem WebSocket-Server verbunden werden, der auf localhost läuft?

Also, was ich tun würde, ist eine Webseite laden von https://example.com, die einige JavaScript enthält, die einen neuen WebSocket zu ws: // localhost: 1234/Kontext öffnet. Dies funktioniert, solange die Webseite über http aufgerufen wird. Sobald https verwendet wird, weigern sich jedoch Firefox und Internet Explorer Verbindung und der WebSocket-Konstruktor löst eine Ausnahme (SecurityError, Code 18). Jetzt fand ich bereits Hinweise von Mozilla, dass https-Sites nur sichere (wss: //) WebSockets verwenden sollten und einfache HTTP-Sites nur einfache WebSockets (link) verwenden sollten. Aber ich sehe das Sicherheitsproblem nicht wirklich, wenn ich von einem https-Kontext zu localhost verbinde. Außerdem funktioniert das wie ein Charme für Chrome, Opera und Safari.

Die eigentliche Frage ist also: Gibt es eine Möglichkeit, um dieses Problem zu umgehen? Wie zum Beispiel die Einführung eines Nicht-HTTPS-Kontexts innerhalb der Webseite oder etwas Ähnliches, um alle Browser dazu zu bringen, sich über eine https-gelieferte Webseite mit ws: // localhost zu verbinden?

Vielen Dank im Voraus! Ich bin nicht gerade ein Web-Entwickler, also ist diese Art von browserspezifischem Verhalten nicht wirklich in meinen Fachgebieten :)

Antwort

1

Sie müssen das Zertifikat zuerst akzeptieren.

Sie können dies tun, indem Sie einfach zu https://localhost:1234/context gehen, in Ihrem Fall. Sobald das erledigt ist, können Sie die URL wss in Ihrer Frage verwenden.

Verwandte Themen