Feb 22
ども、amo-kです。
今回は、先日RIA的なアプリを作っていて遭遇した
問題について書きます。
IE × SSL × リソースDL
上記が重なった際に生じる問題です。
どうなるかといいますと、
HTTPレスポンスヘッダのキャッシュコントロール系で
意図した動作をしないという問題です。
例えば、
Pragma: no-cache
というレスポンスヘッダを定義していると
逆にcacheファイルを参照しようとするようです。
今回は、HTTPサーバ側でレスポンスの全てを構築していた訳ではありませんでした。
サーバサイドはphpアプリケーションでレスポンスヘッダ/メッセージボディを生成するのですが
phpはデフォルトでレスポンスヘッダを生成してくれます。
その際に
Pragma: no-cache
を入れてくれます。
これは嬉しいのですが、
上記IEのバグに対応するには、ヘッダを書き換える必要があります。
ということで以下のようにヘッダを上書きして対応しました。
header("Pragma: ");
一般的には、Webサイトの管理ツールなどで
SSL通信による集計ファイルのDLサービス等で
同様の現象が再現し得るでしょう。
JavaScriptじゃないんだし、
phpソースコード中にIEの対応を書くなんてと思いましたが
よくよく調べてみると、Microsoftサポートでも公開していたので
まあいっかと思った次第です。
February 22nd, 2009 at 6:59 pm
初めまして。mindといいます。
サポートオンラインを見ると。
Internet Explorer 6Service Pack 1(SP1)で発生ってなってますけど、他のバージョンではおきないんですかねー。
phpでheaderの書き換えで普段するのはcontent-typeくらいなもんでしょうか、なかなか気づきにくそうなところですね。
ブラウザ固有の処理をコード内に書くのはやっぱり違和感ありますよね。
ケータイとか向けだとままありそうな気もしますが。
February 23rd, 2009 at 3:38 pm
初めまして 初めまして amo-kです。
コメントありがとうございます!
> Internet Explorer 6Service Pack 1(SP1)で発生ってなってますけど、他のバージョンでは
全てを検証したわけではありませんが、
少なくとも6SP2や7.0でも発生するようです。
> phpでheaderの書き換えで普段するのはcontent-typeくらいなもんでしょうか
そうですね、基本的には 出力データフォーマット指定や文字コードの指定等、Content-type の指定が多いですね。
あとはリダイレクトで Location に URL を指定する事も多いですね。
その他はHTTPステータスコードを指定することがたまにあるくらいでしょうか。
October 6th, 2009 at 5:39 pm
PHPでこの問題がおきていたので
非常に助かりました。
IE7でもこのバグなってますね。
ありがとうございます。