- ベストアンサー
IEでのCGIの問題について
- Perlで作成したデータベースの検索結果が、IEでは正しく表示されない問題が発生しています。
- 検索結果が複数ある場合、古い順に表示され、次の候補を参照するリンクが表示されます。
- このリンクはFire fox, Opera, Safari, Chromeでは正常に動作しますが、IEでは初期画面に戻ってしまいます。また、一部の文字に関してはIEでも正しく表示されます。文字コードが原因かもしれません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
同様の現象に当たったことがあります。 原因を追究してなく、回避していただけなのですが 回避方法はすでに気づかれているエンコードを行うことでした。
その他の回答 (2)
- eroermine
- ベストアンサー率18% (83/444)
IEでCGIのデバッグやってるとそういう事態になりますね。 一度CGIの重大エラー検出(Premature end of script headers) すると抜け出せなくなることがあります。 クッキー、スクリプトを使わない単純なCGIでもそうなります。 以前は対処するために毎回CGIファイル名を変えたりして。 最近はいろいろまっとうなブラウザが出てきたのでIEに頼る必要はありませんね。 ところで、CGIの出力の頭にキャッシュ無効命令入れてますか? Cache-control: no-store
補足
ご回答有難うございます。 IEに頼らない方を選びたいところですが、やはりIEユーザーが多数いる状況だとそういうわけにも行かないのが歯がゆいところです。 Cache-control: no-store 上記の命令は入れていません。 はぁ~、困りました。
- SAYKA
- ベストアンサー率34% (944/2776)
IEのキャッシュだとかクッキーの差し戻しのしかたがセキュリティ設定でいちいち違うからじゃないかな? 実際にリロードによって値をちゃんと取れているのかどうかをデバグした方が良いと思うよ。
補足
ご回答有難うございます。 初期画面へ移動する段階で、確かにIEは値を読んでいないということになります。少し試して分かったことは、IEが文字コードを正しく認識していないと言うことです。例えば「好き」という文字を検索して複数の候補があった場合、下記のように再検索がかかります。 http://localhost/cgi-bin/db.cgi?kw=好き&action=search&line=1 IEでは上記の検索の「好き」を値として読み込んでいません。 しかし、Fire foxやOperaなどは「好き」の値を下記のように「%E5%A5%BD%E3%81%8D」に書き換えて値を読み込みます。 http://localhost/cgi-bin/db.cgi?kw=%E5%A5%BD%E3%81%8D&action=search&line=1 このように変換されているURLでIEで試してみると、IEでもちゃんと値が読み取られます。 SafariやChromeだと「好き」→「%E5%A5%BD%E3%81%8D」→「好き」に変換を繰り返しているので検索表示は、 http://localhost/cgi-bin/db.cgi?kw=好き&action=search&line=1 上記で値が読み込まれます。 ここまででわかったことはIEはUTF-8の文字コードを自動的に変換していないので値を読み込めないのではないかと思っています。
お礼
アドバイス有難うございました。 私も結局のところ原因を追求できずにいますが、IEでは幾つかの文字が正しくURLでエンコードされないようです。最終的に私もエンコード処理をさせることで今回の問題は回避することができました。