MTが頻繁にログアウトしたり記事の編集ができなかったり

| | トラックバック(0)

カテゴリ:

Cookieの有効期限が切れているわけでもなさそうなのに、
何故か頻繁にログインを要求されたり、
新しく記事を書こうとしても、
なぜか本文にカーソルが行かず、何も選択できない状態になったり
することってありませんか?

僕はこういうことが頻繁に起こっていて、
それでも騙し騙し使ってきたのだけど、
やっと謎が解けた。

URLが間違っていたのだ!

どういうことかというと、仮に、ホスト名を
「http://www.example.com」だとする。

この場合、「http://example.com/(www無し)」とアドレスバーに打っても、
アクセスできてしまうし、挙動は変わらない。

だから、MovableTypeにログインするときに
「http://www.example.com/mt/mt.cgi」と打とうが、
「http://example.com/mt/mt.cgi(www無し)」と打とうがログインできてしまう。
これが齟齬が生じる第一歩で、
実はMTのコンフィグファイル(mt-config.cgi)で、
正しいMTのURLというのが設定されている。
それがもし、「http://www.example.com/mt/」の方だった場合、
最初に「http://example.com/mt/mt.cgi(www無し)」でログインしたら、
画面遷移を繰り返すうちに「http://www.example.com/mt/mt.cgi」の方の
リンクをクリックするときがくる。

この時に、Cookieのhost名が食い違うので、
"いわれのない"認証を要求されるのである。

これが、ログインを頻繁に要求されることの真相だと思われる。

一方、記事を書こうとするときに、
記事の本文を入力するテキストエリアを選択できなくなる症状も、
これと同様の理由に起因する。

Javascriptでアドレスの厳密なチェックをしている場合があって、
「http://www.example.com/mt/mt.cgi」と「http://example.com/mt/mt.cgi(www無し)」
は別物ととらえてしまうので、Javascriptが途中で正常に動作しなくなって、
その結果、エディタの部分が作動しなくなっていたのだった。

Javascriptのデバッガの中に

Unsafe JavaScript attempt to access frame with URL http://www.example.com/mt/mt.cgi?__mode=view&_type=entry&blog_id=9 from frame with URL http://example.com/mt/mt-static/html/editor-content.html?cs=UTF-8. Domains, protocols and ports must match.

というエラーメッセージがあって、それをひらめいた。

Domains, protocols and ports must match.

とあり、確かにマッチしていない。

実際、wwwを付けたり消したりすることで、
症状をカンタンに再現できた。

comments powered by Disqus

トラックバック(0)

このブログ記事を参照しているブログ一覧: MTが頻繁にログアウトしたり記事の編集ができなかったり

このブログ記事に対するトラックバックURL: http://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/398

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2009年5月13日 03:42に書いたブログ記事です。

ひとつ前のブログ記事は「OpenPNEにトライ中」です。

次のブログ記事は「さくらインターネットでCGIを使う」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。