IEでActiveXObject("Microsoft.XMLHTTP")で動いていたAJAXのソースコードを、FireFoxでXMLHttpRequest()に書き直しても動かなかった(>_<!)
いろいろ調べたら、どうやら、ブラウザの種類、http経由かファイルか、読み込みファイルのありかなどによってちがいがあるみたいだ
たぶん、みんなに「しってるよー」と言われそうだけど、
ウィリアムのいたずらは、こんがらがりそうなので、メモメモ。。
■テスト方法
ここのソースのようなかんじのGet型のプログラムで確認します。
■ローカルで、ファイルとしてアクセス、読込先はhttp
上記のAJAXのファイル(なんとか.htm)を、ダブルクリックして、ブラウザから開いたような場合。
<<結果>>
IE ちゃんと読める
FireFox よめない
■ローカルで、ファイルとしてアクセス、読込先は、ファイル
上記のAJAXのファイル(なんとか.htm)を、ダブルクリックして、ブラウザから開くという点ではおなじですが、AJAXのプログラム中、読込先を、
onload="httpRequest('http://labs.goo.ne.jp/blogscope/rss/index.rdf')"
のように、httpで指定しているのを、
onload="httpRequest('index.rdf')"
と書いて、AJAXのプログラムファイルと同じフォルダに、読み込むindex.rdfファイルを置いた場合
<<結果>>
IE よめない
FireFox よめない
■ローカルのHTTPサーバーへアクセス、読込先はhttp(ローカル以外)
・上記のAJAXのファイル(なんとか.htm)を、ローカルのサーバーに置く
・http://127.0.0.1/なんとか.htmの形でアクセスする
・読込先のURLは、http://labs.goo.ne.jp/blogscope/rss/index.rdf
のように、ローカル以外のサイト
<<結果>>
IE よめない
FireFox よめない
■ローカルのHTTPサーバーへアクセス、読込先はhttpローカル(127.0.0.1)
・上記のAJAXのファイル(なんとか.htm)を、ローカルのサーバーに置く
・http://127.0.0.1/なんとか.htmの形でアクセスする
・読込先のURLは、http://127.0.0.1/index.rdf
のように、ローカルサイトでHTTP指定
<<結果>>
IE ちゃんとよめる
FireFox ちゃんとよめる
■ローカルのHTTPサーバーへアクセス、読込先はローカルファイル
・上記のAJAXのファイル(なんとか.htm)を、ローカルのサーバーに置く
・http://127.0.0.1/なんとか.htmの形でアクセスする
・読込先のURLは、index.rdfと書いて、
AJAXのプログラムファイルと同じフォルダに、
読み込むindex.rdfファイルを置いた場合
<<結果>>
IE ちゃんとよめる
FireFox ちゃんとよめる
まとめると、httpサーバーにアクセスする場合、
ファイルがあるサーバー(127.0.0.1)以外のサーバーにはアクセスできないが
(→これはたしか、セキュリティ上の仕様ですよね)
ファイルとしてアクセスした場合、
IEは、どこのサイトでもアクセスできるのに対し、
FireFoxは、どこのサイトもアクセスできないってことですね。
もっと言い換えると、いろんなサイトをマッシュアップしたい場合、
IEなら、ローカルにファイルをおいて、そのファイルをブラウザで開けばOK
FireFoxは、トンネルしてあげないとX(下の図のようなかんじ)
-----
|サーバー|<=====>サイトA
FireFox ===>|(トン |<=====>サイトB
| ネル)|<=====>サイトC
-----
ってことですね。
うーん、ForeFoxめんどっちい(って、トンネルサーバーつくればいいだけだけど)