Opera8.xxでブログモードのコメント投稿が固まる件
idea:8946について調べました。
ハッキリ言って原因が分かりません(爆)。が、とりあえず。
結論から言えば、みなさん、Opera9.21に乗り換えましょう!! 以上、解散!!
ではシバキ倒されますので、以下に理由など。(プチ長文。書き方が下手なので、読みにくいです。すんません)
Opera7.xxや8.xxでは、ブログモードのダイアリーにコメントを投稿すると、投稿自体は成功するのですが、「投稿後のページ」が表示されずにその手前で固まってしまいます。
日記モードや見出しモードでは、この現象は起こりません。
また、Opera9.2では、ブログモードでもコメント投稿後に、正常(?)に「投稿後のページ」が表示されます。
トラブルのタイミングは、コメント投稿後の画面へのリダイレクト時に起こっている気配です。
一連のhttpリクエストとレスポンスを見てみたところ、私が気づく程度の差としては、コメント投稿のPOST送信後、ダイアリー側から返されてくるレスポンス『HTTP/1.x 302 Moved』のLocationヘッダが、
となっていて、上記の場合は、POST時のURIと同じパス『http://d.hatena.ne.jp/ユーザー名/』を共有してるけど、下記の(トラブルが起こる)場合は、パスを共有していない(URLのパス部分に“日付/”が追加されている)点くらいでした。
んで、httpレスポンスの302には、歴史的と言うか、慣用的な問題が有りまして、本来はHEADリクエストかGETリクエストに対する *一時的な* リダイレクトを指示するもので、UA(ここではOperaブラウザ)がキャッシュするのはLocationヘッダで指定された方でなく、元々のURLのパスのはずです。・・・仕様ではそうなっているのです。本来、POST後の *恒久的な* パス変更は303レスポンスの役目です。
しかし、http1.0の昔から、302レスポンスが303レスポンスの代わりに使われていたため、大半のブラウザは、302レスポンスのLocationヘッダをキャッシュして、GETでリダイレクトします。IEでもMozでもFirefoxでも、Opera9.2でも同様です。
でも、ひょっとすると、Opera8以前はRFC2068(http1.0)なりRFC2616(http1.1)なりを厳密に解釈して、POSTのリダイレクトには303レスポンスを期待しているのかもしれません。まぁ、303はRFC2616(http1.1)で新規に追加されたステータスコードですので、ぶっちゃけ、http1.1を厳密に解釈している可能性があります。
でもでも、もしそんなことをしているなら、はてなダイアリーだけでなく、多くのサイトでトラブル起こしまくりになっているはずなので、ちょいと信じられません。
私が見逃した原因、もしくは複合要因があるのかもしれません。たとえば、http1.0とかhttp1.1とか堂々とレスポンスせずに、http1.xと返事しているせいでOperaたんが拗ねてるとか。・・・違うか。
とにかく、ここに来て、POSTの返答には(http1.1決め打ちで)303を使え、とか怖くて言えませんので、ここはOperaユーザーの方が大人になって、最新版(Opera9.21)に入れ替えるということで如何なものでせうか。(おそるおそる