問題タブ [custom-protocol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - アプレットを置き換える URL ハンドラー
現在、私の会社には、JAR ファイルをダウンロードして、選択したファイル (.doc など) を開いて変更をリッスンするアプレットがあります。次に、これらの変更がサーバーにアップロードされます。
アプレットは死につつあり、それは私たちにとって大きな問題です。私たちはこれを置き換える方法を考えました (そして今も考えています)。JWS、プラグイン、Adobe Air、Native Messaging、Active X など、多くのことが検討されました (JWS のように、うまくいかなかったものもあります)。しかし今、最善の解決策は URL ハンドラーであると考えています。
ファイルの情報を含む URL をインターセプトし、それをダウンロードして変更をリッスンできるデスクトップ アプリケーションを用意します。
私の質問は次のとおりです。私たちは正しい方向に進んでいますか? 別の「もうすぐ死ぬ」テクノロジーを選択することを恐れています。そして、それはJavaで(うまく)できるでしょうか?私の実際のコード (jar ファイル) はすべて Java であり、私の意図はそれを維持することでした。
クライアントの 99% が Windows を使用しているため、当面は Windows に集中できます。
protocols - カスタム プロトコルでの CSP (コンテンツ セキュリティ ポリシー) の使用
ファンドブローカーサイトを開発していて、ちょっとピンチです。
セキュリティ ポリシーの一環として、CSPはサーバー全体に実装されていますが、現在、スカンジナビアの銀行 ( BankID ) が提供するデスクトップ ソフトウェアとの通信を実装しています。
これにより、問題が発生します。BankID デスクトップ ソフトウェアを開くには、次のようなカスタム プロトコルでリンクをクリックする必要があります。
ご理解いただけると思いますが、CSP ポリシーを通じてこのリンクを許可するのに深刻な問題が発生しています。検索しても結果が得られず、アイデアが尽きてしまいました。
このように、プロトコルでワイルドカード ドメインを許可しようとしました。
CSPをオフにすると完全に機能するので、間違いなく問題です。
誰でもこれを経験したことがありますか?どんな助けでも大歓迎です。
編集
さらに数時間検索した後、Mozilla Wikiで以下を見つけました。
アプリの整合性と信頼性を保証し、実行時に整合性を維持できるように、明確に定義されたアプリケーションと権限の範囲を適用できるアプリケーション配信メカニズムが必要です。
そしてさらに:
特権および認定されたアプリには、独自のスキーム (app://) を介してアクセスします。ドメインはアプリ ID に対応します。
これが当てはまるかどうかはわかりませんが、これを正しく読めば、Mozilla がまさにこの問題に取り組む方法を検討していることになります。
java - リフレクションを使用して java.net.URL URLStreamHandlerFactory を置き換えるのは良い考えですか?
Java では、少なくとも 2 つの方法でカスタム プロトコル ハンドラを登録できます。
- システムプロパティ「java.protocol.handler.pkgs」を設定することにより
- URL.setURLStreamHandlerFactory の使用
詳細については、http://accu.org/index.php/journals/1434を確認してください。
最初のオプションを使用することはできません。サーバー (Tomcat) クラスパスに多数の jar ファイルを追加して、ブートストラップ クラスローダーでハンドラーの実装を表示できるようにする必要があるからです。さらに、いくつかの初期化が必要であり、これはアプリケーション コンテキストで実行する必要があります。
2 番目のオプションの問題は、Factory を 1 回しか登録できないことです (java.net.URL#setURLStreamHandlerFactory を確認してください)。残念ながら、それは Tomcat によって行われます。
私にできることは、プロトコル ハンドラによって既存のデコレータ ファクトリを拡張するデコレータ ファクトリを作成することです。リフレクションを使用するよりも、静的フィールド URL#factory を null に設定し、URL#setURLStreamHandlerFactory を使用して標準的な方法で「decoratorFactory」を登録します (もう一度?)。ここでリフレクションを使用するのが良い考えかどうか疑問に思っています...? セキュリティはどうですか?
私はそのようなことをしたいと思います:
url - href を介してカスタム プロトコルに引数を渡す際に問題がありますか?
「myapp」という名前でカスタム プロトコルを作成し、href タグを介して引数を渡そうとしました<a href="myapp://E:/file.txt">Click here</a>
。
myapp プロトコルは次のとおりです。
アンカー リンクをクリックすると、「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません」というエラーがスローされます。
<a href="myapp:E:/file.txt">
タグを介して渡された引数が認識されていないと思います。
ここでスラッシュ (/) や特殊文字をエスケープする方法がわかりません。
これで私を助けてください、または私が間違っているかどうか教えてください。
java - 基盤となるフレームワークを持たない Java サーバーをホストする場所は?
非常に基本的なサーバーを使用して、小さな Java アプリケーションを作成しました。これはほんの数クラスであり、メインを使用してソケットを手動で開いて、かなり低いレベルで動作します。また、非常に単純なカスタム プロトコルも使用します。
これは localhost でうまく機能し、LAN 以外の場所からアプリケーションを使い始めることができるように、サーバーに展開する準備ができています。
ただし、くそったれをホストする場所が見つかりません。理想的には、実行可能な jar をアップロードし、必要なポートを開き、実行可能ファイルを実行できるサービスを見つけたいと考えています。理想的なサービスは、サーバーを改善するときに、jar の新しいバージョンを簡単にアップロードできるようにするものでもあります。無料である必要はありませんが、このアプリケーションの同時ユーザー数は最大で約 4 人なので、スケーラビリティは気にしませんし、ホスティングに法外な料金を払いたくありません。月額$ 10の球場では大丈夫でしょう。
Heroku などのサービスを調べてみましたが、いずれも Maven、J2EE、JSP などを使用する必要があります。私はそれらのいずれも使用していません。古き良き public static void main(String[] args) だけです。
それらのいずれかに適合するようにアプリケーションを適応させることは、しばらくの間価値がありますか? カスタムプロトコルを使用したいという事実によって、それは複雑になりますか?
javascript - ブラウザーが JavaScript を使用したカスタム プロトコルをサポートしているかどうかを確認しますか?
"myapp://" のようなカスタム プロトコルを使用する Windows マシンにインストールする必要があるアプリケーションがあります。だから私は、クリックするとそのアプリケーションを開くWebページ上のボタンを持っています。ボタンをクリックすると、そのプロトコルがブラウザでサポートされているかどうかを確認する必要があります。サポートされている場合はアプリケーションを開き、サポートされていない場合はエラーを表示します。インターネットにはいくつかのハックがあり、いくつか試してみましたが、うまくいかないようでした。これをよりクリーンな方法で行いたいと考えています。誰でも助けてもらえますか?