トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BBS-サポート掲示板/501

ページの作成や編集にはユーザ登録が必要です。

 Firefox + HTML4.01 Strict で子Wikiのログインに不具合が出ました - ZON (2006年02月24日 11時35分36秒)

ブラウザ依存の問題のようだと認識していますが、経緯を報告しますね。

スタイルシートでのテーマ変更で不足を感じるようになったので、いよいよサイトテンプレートに手を出すことにしました。で、せっかくなので間違いに気づきやすい HTML 4.01 strict の文書型宣言、書物によっては「厳密型」とか「標準準拠モード」と書かれている以下のものに変更するところからサイトテンプレートの作成を進めました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

大筋ではデフォルトのサイトテンプレートのままなんですが、テーマも専用に自作するからと、おそらくtDiary互換のために指定されているだろう クラス名bodyとdayのブロックをはずして、少し単純なブロック構成にしたテンプレートを数種類作りました。

※こんな感じ
+-Sidebar-+ +-Main--------------------------+
|         | |      *-Adminmenu------------* |
|         | |   *----h1-------------------* |
|         | | +-Section-------------------+ |
|         | | | +-Page Header-----------+ | |
|         | | | |                       | | |
|         | | | +-----------------------+ | |
|         | | |     *** page ***          | |
|         | | |                           | |
|         | | | +-Page Footer-----------+ | |
|         | | | |                       | | |
|         | | | +-----------------------+ | |
|         | | +---------------------------+ |
|         | | *-Footer(Mail,sign,version)-* |
+---------+ +-------------------------------+
※この他にページ名Footerが著作・バージョン表示の下に
  出るタイプも試作しました

テーマも専用のものを調整し、ここまでの作業と表示については期待通りに完了しました。

ところが子Wikiにログインすると、すぐにセッションが終了して「ログインしていません」というエラーを返すようになってしまいました。

※親Wikiでは問題が出ません

以下は追試です。
エラーはどのタイミングで発生するか
ログインそのものは成功し、管理メニューは出ます。しかし、ページの移動、再読み込み、メニューの項目をクリックした時にはもう「ログインしていません」と返されます
クッキーの受け入れはどうか
設定から「クッキーを受け入れる際に毎回尋ねる」に変更して確認してみました。ログイン時に一回、メニュー表示の時に一回、ページを移動するときに一回(この後にエラー)、クッキーの上書きを尋ねられました。桁が多くて自信がありませんが同じ内容であるようでした。……ただ、親Wikiと子Wikiで同じラベル(あるいは同じディレクトリ)のように見えましたが、これは仕様通りだったかと思います
Perlの問題か?
違うようです。Perl5.8.2とPerl5.6、サーバーはいずれもApacheですが1.3と2.2.xで確認しました。またローカルに立てたサーバー(実験用)と実際のサーバー(レンタル)の両方で確認しました
ブラウザ固有の問題であるか?
そのようです。古いFirefoxでの追試を行っていませんが、Windows、LinuxのFirefox1.5.0.1(新しいGeckoエンジンの方)で同様の結果になりました。一方でIE6sp2(Windows)、konqueror(Linux、kde)ではこの現象は起きません

触感ですが、エラーというよりもFirefoxが子Wikiでは無くて親Wikiのログインと受け止めているように判断しているように感じました。

子Wikiの編集作業がFirefoxからは出来ないというだけで、他は今のところ問題が出ていません。またそれについても他のブラウザを使えば解決できています。

「標準モード」でのブラウザの挙動や解釈についてもあたってみましたが、今のところ情報を見付けておりません。

長くなりましたが、以上について報告します。

  • 私も同様の作業で同種のトラブルに見舞われました。私の場合は、理解に苦しむのですが、CSSファイルを改善したら症状が止みました。ちなみにCSSファイルは知人から譲り受けたファイルをたたき台にしていたのですが、それが文字コードが内部で混在(シフトjisとEUC)していて、コメント行の終点が乱れていました。常識的にはこれが原因でcookie周りにエラーが出るはずもないのですが、しかしここを改善してからは正常に作動しています。zon様とほぼ同じ環境での「事件」です。Gecko最新版に何かあるのかな、としか推測できません。以上、ご参考になればと。 - 近江屋 (2006年02月24日 19時55分36秒)
  • セッションクッキー周りのトラブルは、私も経験したことがありますが、原因解明には至っておりません。話題に上がっている、文字コードは「ファイル単位でそろえておくこと」が大事ですね。外部ファイルを読む時に混在するのはcharaset属性を指定することでトラブルを回避できるようです。 - A_M (2006年02月25日 06時28分52秒)
  • 投稿者のZONです。さらに追試してみました。

文字コードとかキャラクターセットについては最初に確認していましたが、念を入れて今回は日本語コメント無しの @charset "iso-8859-1"; で、自作のテーマと本体付属のデフォルトテーマをリネームしてみたものを使用してみました。

結果的には今まで通り、「ログインしていません」と出ました、……が、途中で何故かもう1クリックだけセッションが長持ちした事があったのが不思議です。それも常にでは無かったようですが。謎ですねぇ?時間なんでしょうか???

いろいろと資料を読み進めていて、やっぱりまだ判らないのですが……サーバーのデフォルト動作とかが絡むと厄介な気がします。(サーバーの標準文字コードとか……)

CSS(テーマ) かテンプレートへの記述で 解決できるとうれしいので、しばらくあがいてみます、……いやまぁ、HTML4.01移行型(後方互換型)で書けば大丈夫なのは判っているんですが(笑) 実現したいテーマ(特徴はoverflow値を使ったスクロール)の為にはなるだけ HTML4.01strictであった方が(自分にとって)楽なもので、同じこだわりのある人にしか有用では無い内容ですがもう少しがんばってみたいですね。

うまくいったらテンプレートの投稿とかもしてみたいですし。 - ZON (2006年02月26日 18時09分10秒)

  #解決(みたいな)の報告

解決できました……というかかなり不思議ですが。

いろいろと追試を繰り返して問題の発生箇所を狭めて、ついに解決しました。

……とはいえ、なんだか釈然としないのですが(笑)

ちなみに条件を満たせばFSWiki標準の後方互換モードでも発生することもわかりました。

※ 後方互換モード =
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> の事です

■試験の流れ

  1. 現在の配布物(FSWiki3.5.10)を用意しまして、このサイトテンプレートでは試験に使うテーマ(CSS)で問題が出ないことを、まず確認します。(FirefoxのJavaScriptコンソールを使用しました)
  2. 次に、使用したいテンプレートファイルを用意して、一ヶ所ずつ変更を加え、どの段階でログインエラーが出るのかを探っていきます
  3. そうしてエラーの元となっていそうなカスタマイズを除いたテンプレートが動くことを確認して、さらに別のCSSテーマで試験します

……この結果、テンプレートのカスタマイズでは次の事を行うとFireFoxでログインエラーを起こすことを発見しました。

ヘッダーエリアに「存在しない対象に向けたリンクが記述されている」とエラーが起きる

例えば次のようなものがそうです

 <!--TMPL_IF NAME="THEME_CSS"-->
    <link rel="stylesheet" type="text/css" href="<!--TMPL_VAR NAME="THEME_CSS"-->" title="USERCSS">
  <!--/TMPL_IF-->
    <link rel="Alternate Stylesheet" type="text/css" href="theme/default/default.css" title="FSWiki">

これはMozilla系ブラウザでおなじみの代替スタイルシート指定です。いつもはユーザーテーマで表示しつつ、確認のためにFSWikiの標準テーマを使えるようにしておきたい、とか考えてサイトテンプレートにこのように書いておく。親Wikiでは確かにこの theme/default/default.css という指定は間違いではありませんが、子Wikiでは間違いになります。 ../theme/default/default.css としなくてはなりません。

または以下のようにすれば正常に動きます。

http://*サイトのURL*/theme/default/default.css

同様に、 favicon を指定しようとして次のような行をテンプレートに加えてもエラーになります

 <link rel="shortcut icon" href="favicon.ico">

正しくは次のようにしなくてはならないようです。

 <link rel="shortcut icon" href="http://*サイトのURL*/favicon.ico">

どうやら、このヘッダーエリアに間違ったリンク情報が含まれていると、これを無視せず、なんらかの働きによってFirefoxはFSWikiでのログインセッションでエラーを起こしてしまうようです。

その理由は……よくわかりません(大汗)

わからないので、「発見」または「気づきました」としておきます。今後テンプレートを作られる方で、Firefox等での運用が視野に入られている方は参考にしてください。- ZON (2006年03月06日 17時00分26秒)

  • ヘッダ部の記述ミスが、セッション取得のエラーまで起こす。というのは貴重な情報ですね。細かく言えば、ログイン時に受け取るセッションCookieかも - A_M (2006年03月17日 08時36分29秒)
お名前: コメント:

最終更新時間:2006年08月24日 17時46分16秒