現在、XOOPSのwrapsモジュールを仕事で使用しているのだが、実験機ではSSLなしで構築し、本番機はSSL環境ということで、最近その入れ替えを行った。
が、wraps内のhtmlからswfやpdfへリンクしたファイルをダウンロードしようとすると、ファイルが見つからないというエラーが発生するようになった。
この症状はIE6だけでFirefoxは問題ないことから、IE6のバグだろうと検索してみると、あるわあるわ。で、その辺りに載ってる解決法には、ヘッダに session_cache_limiter を public として渡せ、とかって書いてあるんだけど、それは既にwrapsのコードにセットされている。
どうしたものかと考えながら検索すると、Pragma というヘッダーもセットした方がいいというページがあったため、それを参考にして
header("Pragma: private");
というコードを、
XOOPS_TRUST_PATH/modules/wraps/main/index.php
の、
header("Cache-Control: public, max-age=$cache_limit");
という行の直前に挿入することで解決。無事にファイルのダウンロードができるようになった。
またこのコードのおかげかどうかは分からないが、SSL上のwrapsで動かなかったJavascriptも正常に動作するようになったのだが(こちらもFirefoxは修正前から動いていたし、SSL環境ではない実験機ではIE6でも動いていた)、関係あるかどうかは不明。
ちなみに、Pragma のパラメータは public でも動くけれど、自分の環境ではタイトルが変になったので、private にしている。
以上、同じ症状で困っている人がいるかどうかは分からないけど、メモ。