2011-01-08 11 views
1

HTML/Javascript/jqueryページに埋め込まれた小さなグラフィック編集Javaアプレットがあります。JavaScriptからJavaを呼び出すときの通信許可の問題

私は、Java関数を呼び出すjqueryダイアログをポップアップする保存ボタンをページに持っています。

この関数がサーバーにアクセスしようとすると、アクセス許可エラーで終了します。同じコードがグラフィックスオブジェクトをロードするために働きます。

私は現在、JavascriptからJavaへの呼び出しがアプレットコンテキスト(別のスレッドですか?)にないと仮定しているため、ロードされた場所がないため、その場所には話せません。

正しい状況になる方法はありますか?

私は、Javaアプレットに保存ボタンを置き、Javaダイアログを使用して他のデータを取得することで回避できると思います。 HTML5キャンバスへの長期的な移行は私が考える解決策です。

+0

あなたのアプレットは署名されていますか? –

+0

いいえ、私は人々がそれを信頼する必要がないようにしたいと思います。 –

答えて

0

JavaScript - > Java呼び出しのsecurity modelでは、署名されたアプレットへの呼び出しでさえ、信頼できないものとして扱われます。これを避けるには、呼び出されているメソッドがわかっている場合は、AccessController.doPrivileged()を使用して適切な権限で呼び出しを実行できるようにします。ただし、誰でもあなたのアプレットを埋め込み、独自のJavaScriptを使用して呼び出すことができるので、この解決策ではセキュリティ上の影響がありますので注意深く検討する必要があります。

+0

私はすでにアプレット(サーバー側の検証とサニタイズ)を信頼していないので少し迷惑ですが、少なくともこれは説明です。 –

0

ポリシーファイル($ {user.home} .java.policy)にアクセス権が設定されているか、手動で実行するか、polictool(JDKのbinディレクトリ)で実行できます。 Set up a Policy File to Grant the Required Permissionを参照してください。これは、アプレットを使用する各クライアントのマシンで実行する必要があります。

もう1つの方法は、アプレットに署名することです。

アプレットのセキュリティに関する詳細は、wikiJava Plug-in Developer Guideにあります。

0

署名されていないアプレットは、サービスされたサーバーとのみ通信できます。別のサーバーと通信するには、アプレットに署名する必要があります。詳細情報here

関連する問題