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のデバッガの中に
というエラーメッセージがあって、それをひらめいた。
Domains, protocols and ports must match.
とあり、確かにマッチしていない。
実際、wwwを付けたり消したりすることで、
症状をカンタンに再現できた。