13

HTTP リクエストを作成する際に、アプレットとそのホスト ブラウザとの間でやり取りはありますか? または、ネイティブ ブラウザ コードから完全に独立してリクエストが作成されますか?

具体的には、ブラウザで実行されている Java アプレットには、ブラウザのセッション状態とキャッシュを共有する暗黙の方法がありますか?

私は、アプレットがブラウザのキャッシュを使用し、ブラウザの Cookie にも (何らかの形で) アクセスできるという HTTP 要求を行うと言っている、権限のない情報源からの投稿をいくつか読みました。

私が を使用して行ったテストでURLConnectionは、そうではないことが示唆されており、私の直感では、これは便利すぎるように思えます。JVM 内では、その JVM 外の世界について何も知らないと仮定します。つまり、これが機能する唯一の方法は、JVM 実装がブラウザに固有のものであり、URL 関連メソッドの実装がネイティブ ブラウザ コードに委譲される場合です。 ?

paramCookie データが暗黙的に共有または利用可能でない場合、タグ内のセッション ID をアプレットに渡すのがベスト プラクティスですか? このアプローチにセキュリティ上の懸念はありますか? アプレットがリクエストにブラウザのキャッシュを使用しない場合、アプレットでのリクエストのキャッシュはどのように機能しますか?

4

5 に答える 5

5

Windows 7、Java 1.6.23、および Firefox、Chrome、および Internet Explorer での私のテストではHttpURLConnection、アプレットの JVM 内からの sはブラウザとまったく対話しません。それらはキャッシュを使用せ、Cookie ヘッダーが追加されていません。

于 2012-10-22T07:52:21.163 に答える
5

アプレットは、ブラウザ プラグインである Java Plugin によって実行されます。アプレットは実際には、ブラウザーによって読み込まれる HTML ページの一部であり、ブラウザー DOM およびページ内の JavaScript コードと通信でき、ブラウザーを使用して元のサーバーに要求を送信します。

詳細については、 http ://docs.oracle.com/javase/tutorial/deployment/applet/appletExecutionEnv.htmlおよびhttp://docs.oracle.com/javase/tutorial/deployment/applet/server.htmlを参照してください。

于 2012-06-20T08:40:46.497 に答える
2

Javaプラグインに依存していると思います。私の経験では、通常、ネットワーク接続にブラウザーのキャッシュを使用し、通常は Cookie を送信します。アプレットで新しいファイルを取得する前に、ブラウザーのキャッシュを空にする必要がありました。

Oracle Java 7 Plugin コントロール パネルを見ると、アプレットに直接接続を使用するオプションがネットワーク パラメータに表示されますが、デフォルトでは「ブラウザ パラメータ」が使用されます。

Cookie に関しては、特に MacOS X でセッション Cookie を送信しない Java プラグインを過去にいくつか見てきました (Apple は回避策を提案しました)。しかし、ほとんどの開発者は現在、それらが送信されていると想定しており、実際には通常は機能します。

于 2012-06-20T08:35:57.500 に答える
1

アプレットはデフォルトではセッション情報を共有しませんが、初期化中にアプレット パラメータを介してセッション ID を渡すことができます。そして、HTTP リクエストごとにセッション ID を使用します。

于 2012-06-20T08:36:52.853 に答える