Ich arbeite an einer Webanwendung, die Daten benötigt, die nur von ihrem lokal installierten nativen Anwendungsbrowser abgerufen werden können.
Wie können Sie die Browser-Sandbox umgehen, um mit einer nativen Anwendung sicher zu kommunizieren (da die Daten möglicherweise vertraulich sind)?
In dem einzigen Beispiel, das ich gefunden habe, verschiebt der Benutzer einige Token und Dateien manuell zwischen den beiden, was eine schreckliche Benutzererfahrung ist, die ich vermeiden möchte.
web-applications
Zak Kus
quelle
quelle
Antworten:
Sie können einen Webserver in die native Anwendung einbetten, und Ihr Client kann ihn über fest codierte Links zu http: // localhost / xyz aufrufen (möglicherweise müssen Sie sich hier Gedanken über Cross-Site-Scripting-Warnungen machen und / oder den Server ausführen auf einem Nicht-http-Port). Wenn Sie Websockets verwenden, kann Ihre native Anwendung sogar Daten an den Webbrowser senden, sobald der Browser die Kommunikation initiiert hat.
Ich mache es selbst lokal, ein eingebettetes Webbrowser-Steuerelement fordert Visualisierungsdaten von einem benutzerdefinierten Webserver an und bei der Entwicklung führe ich beide auf demselben PC aus.
Es gibt viele winzige und effiziente eingebettete Webserver für C / C ++ (Mongoose, NxWeb, Civetweb usw.). C # tendiert dazu, einen voll funktionsfähigen WCF-Server zu verwenden. Python enthält einen kleinen Webserver in IIRC.
quelle
Es gibt verschiedene Möglichkeiten, eine native App und eine Browser-App miteinander zu verbinden.
Sie können den Browser in die native App einbetten, ähnlich wie es PhoneGap-Apps auf Mobilgeräten tun. Auf diese Weise können Sie die Javascript-Engine des Browsers erweitern und Anrufe zwischen den beiden tätigen.
Alternativ können Sie Ihre Architektur überdenken. Lassen Sie sowohl die native Anwendung als auch die browserbasierte Anwendung den Server als Vermittler verwenden. Daher kommunizieren sowohl der Browser als auch die native Anwendung nur mit dem Webserver, der bei Bedarf Informationen zwischen den beiden weiterleitet.
Oder wenn Sie native Funktionen benötigen ... erstellen Sie einfach eine einzelne native Anwendung.
Ich empfehle den Ansatz des "lokalen Webservers" nur für Anwendungen, die in kontrollierten Umgebungen ausgeführt werden. Wenn Ihre Software auf Endbenutzercomputern mit minimalen Supportanforderungen installiert und ausgeführt werden soll, werden Sie mit einer ganzen Reihe von Problemen im Zusammenhang mit Firewall- und Antivirensoftware konfrontiert sein.
quelle