« 日本人とグーグルの違い | トップページ | munepi.com リニューアル »

Ajax.Request GET --> OPTIONS

Ajaxなプログラミング経験は少ないのだが、本を片手にAjax.Requestを使ってみようと思ったら、超はまった。

原因は、クロスサイトHTTPリクエストだった。

ブラウザのアドレスに、http://munepi.com/test.html と入力してHTMLを表示させ、
JavaScript内で、

new Ajax.Request('http://www.munepi.com/study/feed',
  {method:'get',
  ...
});

とやったら、クロスサイトリクエストとみなされて、本来GETで出されるはずのHTTPリクエストが、OPTIONSになってしまっていた。

また、同じく http://munepi.com/test.html と入力してHTMLを表示させ、
JavaScript内で、

new Ajax.Request('./study/feed', {
  method:'get',
  ...
});

とやった場合は、GETにはなるのだけどリクエストがwww.munepi.com/study/feed宛でないため、wordpress側が 301moved permanently のレスポンスを返す。

http://www.munepi.com/test.html と入力してHTMLを表示させれば上のどちらでも、問題ない。

クロスサイトHTTPリクエストができないというのは、本に書いてあったんでわかっていたのだが、wwwのありなしで違うサイトと見なされたというのが今回の盲点。
munepi.comはhttp://munepi.com/でも、http://www.munepi.com/でもアクセスできるので、それが問題を誘発した形である。
とりあえず、Ajax.Requestはできるようになったけど、悩みが残った。

|

« 日本人とグーグルの違い | トップページ | munepi.com リニューアル »

Ajax」カテゴリの記事

「プログラミング」カテゴリの記事

コメント

mod_rewrite で http://munepi.com/ のみアクセスできるようにするといいかも。
http://www.happytrap.jp/blogs/2010/02/02/2251/

…確認はしていないので、どうなるかはサッパリですがヽ(´▽`)/

投稿: Sartan | 2010年4月25日 (日) 15:31

>Sartan
ご無沙汰してます。
なるほど。これってapacheの設定ファイルのことですよね?ホスティングでも使えるのかしら。

その後、これまた本に載っていた方法なんですが、他サイトのフィードをダウンロードするサーバーサイドスクリプトをmunepi.com/getFeed.phpに置いて、それを使えばクロスサイトリクエストを合法化できるようです。
で、JavaScriptからは./getFeed.phpのように相対パスでアクセスすれば、wwwがあってもなくても相対パスなんで問題ないという結論です。

投稿: munepi | 2010年4月29日 (木) 12:20

あぁ、しまった(ノ_-。)
仰る通り、リンク先の内容は apacheの設定ファイル(httpd.conf)です。うっかり、.htaccess ファイルの設定のつもりでリンクを貼ってしまいました。

伝えたかったのは...
http://www.maido3.com/server/script/rewrite.html
の方法です。すみません。

投稿: Sartan | 2010年4月29日 (木) 16:50

似たような症状におちいり、この情報が非常に役に立ちました、助かりました。

私の症状はhttpとhttpsのプロトコルの違いです、ホスト+ドメインが全く同じでもプロトコルの違いでNGでした、、、。

投稿: りょ | 2010年5月14日 (金) 13:53

> Sartanさん
確かに、wwwなしに統一しちゃえばいいですよね。
ただ、これって、ホストがmod_rewriteを有効にしていないといけないんですね。さくらインターネットなんですが、調べてみますわ。。

>りょさん
お役に立てて幸いです。
Web関係のプログラムって、知らなきゃいけないルールがいっぱいあって大変ですよね。。

投稿: むねぴ | 2010年5月15日 (土) 15:13

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/63247/48174368

この記事へのトラックバック一覧です: Ajax.Request GET --> OPTIONS:

« 日本人とグーグルの違い | トップページ | munepi.com リニューアル »