- - PR -
プロキシサーバを経由してPDFファイルをダウンロードするとファイルが壊れる
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-10 17:18
プロキシサーバのレスポンスヘッダは見られませんでしたが, WWWプロキシはHTTP1.0準拠とうたっていました。 ということは,プロキシから先はHTTP1.0で通信しているようです。 そこで疑問なのですが,同じPCからFireFoxでは正常にPDFファイルを 取得できるのに,IE6.0では取得できないのでしょうか。 もっとも,全てはここから始まったんですが…。 | ||||||||||||
|
投稿日時: 2008-06-10 17:33
んでは再度確認をば。
Firefox等で確認されてるときは、IEで正常に取得できないのと同じプロキシを経由していますか? #同じIE6でもプロキシ経由したらダメってことはそこが原因としか私には思いつかない ##細かいようですがFireFoxではなくてFirefoxですね | ||||||||||||
|
投稿日時: 2008-06-10 17:46
はい,通信を行うときの設定は全く同じになっています。 それでも結果が違うって??? >#同じIE6でもプロキシ経由したらダメってことはそこが原因としか私には思いつかない > #私も同様です。 #やっぱり最終手段かな? >##細かいようですがFireFoxではなくてFirefoxですね > #失礼しました。 #そうですね,今見ているタイトルバーにもそう書いてありました。(^^ゞ | ||||||||||||
|
投稿日時: 2008-06-10 23:49
あまり聞かない現象ですが、ひょっとしたらと思うのですが、Web サーバー内でファイルを読み込む段階ですでに壊しているということはないですか? wPdfPage はどうやって構築しているのでしょうか?試しに、ファイルから読まずに、テスト用の 00 01 02 03 04 … のような単純な内容で response を出力してみてはどうでしょうか。また、どのように壊れるのでしょうか?壊れたバイトデーターはどんな値になっているのでしょうか? (テストデーターは 00 00 00 01 00 02 00 03 00 04 … のようにできるだけユニークなほうが良いかもしれませんね。) | ||||||||||||
|
投稿日時: 2008-06-11 08:56
パケットキャプチャして比較してみれば?
| ||||||||||||
|
投稿日時: 2008-06-11 10:05
返信が遅れて失礼しました。
そうですよね,ググッてみましたが同様の現象は見つけられませんでした。 公開してから1年以上経ってから見つかった障害です。 しかも,障害が確認できるのは2カ所だけ…。内一カ所は私のマシンです。 あ,愚痴はこのくらいにして,ご質問の回答に戻ります。 wPdfPageはAspose.Pdf.Kitを使用してPDFファイルを作成していますが,そのクラスです。 初めはサーブレットのバグも考えたんです。 が,同じHTTPリクエストでFirefoxでは正常動作,IE6.0なら異常動作っていうのも, プログラムの動作として考えると…。 また,開発環境では再現しなくて,アプリケーションを公開しているサーバのみでしか 動作確認ができない状態です。 更に,既にユーザに使われているので,あまり極端なテストプログラムに差し替えるのも 難しい状態です。
そうですね。 ツールを探してやってみます。 プロキシを経由する/しないでサーバからのレスポンスヘッダがHTTP1.0とHTTP1.1と 変わりますが,ダウンロードするデータに違いが出てしまうものなんでしょうか? | ||||||||||||
|
投稿日時: 2008-06-11 10:34
こんにちは、3〜4年前ですが似たような現象に合ったことがあります。
その時は散々調べて、結局アドインの問題だったような記憶です。 Cns_minだったかな?JWORDを入れたときに入るBHO型のプラグインで、 その時はこれをアンインストールしたら正常に動作しました。 IE6無印では正常に動いてIE6のSP?を入れた端末で動かないという現象だった と思います。 アドオンを全部無効にした状態でも現象はでますか? | ||||||||||||
|
投稿日時: 2008-06-11 11:01
そのツールは知らないのですが、close する前に size や toByteArray を取得して大丈夫なのかな?と疑問に思いました。 (仕様次第であり、たとえば似たような名前のメソッドを持つ Java の java.io.ByteArrayOutputStream だったら close してもしなくても良いので、一概には言えませんが。)
私だったら wPdfPage の内容を Web サーバー内のファイルとして、逐一ログファイルとして記録していきます(ミリ秒単位の時刻をファイル名とするなど)。バグが発生したら、そのログファイルがすでに壊れているかどうかを遡って調べます。これだと、追加だけで済むので楽です。 プロキシーを通すかどうかで、バッファーのチャンクのリード・ライトのバイト数が違ったり、マルチスレッドの動きが違ってバグの出方が異なるなどが考えられます。 以上、あくまでも、wPdfPage を疑った場合の話なので、ネットワークやクライアント側の疑いは別途残ります。 |