1

当社の製品には、SWFObject によってロードされる Flash アプリケーションが含まれています。ある顧客の場合、HTTPS 経由ではなく HTTPS 経由でこの SWF にアクセスすると、Flash Player はそれをロードしません。

私はお客様に、(ラッパーページではなく) SWF ファイルの URL に直接アクセスするように依頼しました。

  • 彼が HTTP 経由でこれを行うと、SWF がブラウザーに読み込まれます。
  • HTTPS 経由でファイルを保存すると、IE7 は「ファイルを保存」ダイアログ ボックスを表示します。これは、「Content-Disposition: attachment」ヘッダーが応答に存在することを意味します。これは、SWF が Flash Player にロードされない理由も説明します。セキュリティ対策として、そのヘッダーで提供される SWF は再生されません。

だから、私は理解しようとしていることがいくつかあります:

  1. Content-Disposition ヘッダーがサーバーによって送信されていることを確認するにはどうすればよいですか (IE7 の奇妙なアーティファクトではありません)。ユーザーは自由に使える IE7 しか持っておらず、Firefox、Chrome などは使用できません。IE7 には、IE9 の開発者ツールにある便利な「ネットワーク」タブが含まれていません。

  2. ヘッダーが存在すると仮定すると、どうやってそこにたどり着くのでしょうか? Tomcat 6 を実行しています。SWF は、Tomcat のデフォルトのサーブレットによって提供されています。HTTPS コネクタが使用されている場合はヘッダーが存在するように見えますが、HTTP コネクタが使用されている場合は存在しません。HTTPS コネクタを有効にすることを除いて、Tomcat の構成はそのままです。

余談ですが、私は Flash のキャッシュ クリアを信用していません。IE9 の下の私のマシンでは、ブラウザーのキャッシュと Flash Player の保存データを明示的にクリアした後でも、SWF はキャッシュによって満たされることがよくあります。ブラウザ。ここで何か不足していますか?顧客が偽のキャッシュ バージョンの SWF にアクセスしている可能性はありますか?

編集:明らかに、開発者ツールの「キャッシュのクリア」コマンドは、実際にはキャッシュをクリアしませ。標準的な方法を使用すると、期待どおりの結果が得られました。

編集 2: Tomcat 内のトレースは、Content-Disposition ヘッダーが設定されていないことを示します。ブラウザが受信していないことは確かではありませんが、ブラウザがTomcatに直接接続していることがわかります。これは、ブラウザー側の奇妙な動作のようです。

4

2 に答える 2

2

この問題は、応答に次のヘッダーが存在することに関係していました。

Cache-Control: no-cache
Pragma: no-cache

これらは、ページがセキュリティ制約 (conf/web.xml で構成) によって保護されていたため、Tomcat によって送信されていました。これらのヘッダーにより、IE7 は ' Content-Disposition: attachment' ヘッダーが存在するかのように動作しました。

私の解決策は、顧客に次の構成を Tomcat の conf/context.xml に追加してもらうことでした。

<Valve className="org.apache.catalina.authenticator.BasicAuthenticator" securePagesWithPragma="false" />

これにより、ヘッダーが次のように置き換えられます。

Cache-Control: private

...IEの問題を回避しながら、プロキシがページをキャッシュするのを防ぐという目標を達成する必要があります。これは、次の場所にあるソリューションに基づいていました。

http://daveharris.wordpress.com/2007/07/09/how-to-configure-cache-control-in-tomcat/

ただし、その非常に類似したソリューションでは、ヘッダーが完全に抑制されました。これらの属性の詳細は、Tomcat のドキュメントに記載されています。

http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Basic_Authenticator_Valve/Attributes

于 2011-07-06T22:20:37.820 に答える
1

暗号化の前にサーバー側で発信 HTTP 応答をログに記録するか、ヌル暗号を使用するか、RSA キーを Wireshark に提供して、パケット キャプチャからヘッダーを確認できる必要があります。

于 2011-07-01T21:15:49.733 に答える