ローカルにインストールされているネイティブアプリケーションブラウザーからのみ取得できるデータを必要とするWebアプリケーションに取り組んでいます。
どのようにしてブラウザーのサンドボックスを回避し、ネイティブアプリケーションと通信できるようにします(データは機密情報である可能性があるため、安全に)。
私が見つけた唯一の例では、ユーザーが手動でいくつかのトークンとファイルを2つの間で移動します。これは、回避したい恐ろしいユーザーエクスペリエンスです。
ローカルにインストールされているネイティブアプリケーションブラウザーからのみ取得できるデータを必要とするWebアプリケーションに取り組んでいます。
どのようにしてブラウザーのサンドボックスを回避し、ネイティブアプリケーションと通信できるようにします(データは機密情報である可能性があるため、安全に)。
私が見つけた唯一の例では、ユーザーが手動でいくつかのトークンとファイルを2つの間で移動します。これは、回避したい恐ろしいユーザーエクスペリエンスです。
回答:
ネイティブアプリケーションにウェブサーバーを埋め込むと、クライアントはhttp:// localhost / xyzへのハードコードされたリンクを介してウェブサーバーを呼び出すことができます(ここでクロスサイトスクリプティングの警告を心配する必要があるか、サーバーを実行する必要がある場合があります) http以外のポート)。WebSocketを使用する場合、ブラウザーが通信を開始すると、ネイティブアプリケーションはWebブラウザーにデータをプッシュすることもできます。
私はローカルでそれを行います。埋め込まれたWebブラウザーコントロールがカスタムWebサーバーから視覚化データを要求し、開発時には同じPCで両方を実行します。
C / C ++(Mongoose、NxWeb、civetwebなど)には多くの小さく効率的な組み込みWebサーバーがあり、C#はフルオンのWCFサーバーに移行する傾向があり、PythonにはIIRCに小さなWebサーバーが付属しています。
ネイティブアプリとブラウザアプリを組み合わせる方法はいくつかあります。
PhoneGapアプリがモバイルで行うように、ブラウザーをネイティブアプリ内に埋め込むことができます。これにより、ブラウザのJavaScriptエンジンを拡張し、2つの間の呼び出しを行うことができます。
または、アーキテクチャを再考してください。ネイティブアプリケーションとブラウザベースのアプリケーションの両方がサーバーを仲介役として使用するようにします。そのため、ブラウザとネイティブアプリケーションの両方が、必要に応じて2つのサーバー間で情報を転送するWebサーバーとのみ通信します。
または、ネイティブ機能が必要な場合...単一のネイティブアプリケーションを作成します。
制御された環境で実行されるアプリケーション以外には、「ローカルWebサーバー」アプローチはお勧めしません。ソフトウェアが最小限のサポート要件でエンドユーザーのマシンにインストールして実行することを目的としている場合、ファイアウォールのホスト全体とウイルス対策ソフトウェアに関連する問題に対処していることがわかります。