jQueryの$.ajax()でこのブログのRSSを取得、表示させようと試みました。
$(function(){ var blogUrl = 'http://noboruhirabayashi.com/blog/?feed=rss2'; $.ajax({ url : blogUrl, type : 'GET', error: function(){ $('#update').html('<span class="error">xmlファイルの読み込みに失敗しました。</span>'); }, success: function(xml){ var blogupdate = $(xml); blogupdate.find('item').each(function() { var entry_item = $(this); var entry_item_title = entry_item.find('title').text(); var li = $('<li />'); li.append(entry_item_title); $('#update ul').append(li); }); } }); });
このような形で、普通なコード。
おかしいところはないのですが、RSSが表示されず...
firebugやwebインスペクタなどで確認すると
〜 is not allowed by Access-Control-Allow-Origin
moz-nullprincipal:*******
といったエラー。
結論としてはURLの「www」の取り扱いでajax()が「noboruhirabayashi.com/blog/?feed=rss2」をとりにいっても自動で「www.noboruhirabayashi.com/blog/?feed=rss2」に転送され、違うドメイン扱いとなり読み込めなくなっている様子。
なので、根本的に解決するため.htaccessでURLを「wwwなし」に統一させることにして(←そんなの先にやっとけよというのはなしということでw)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.hogemoge\.com
RewriteRule ^(.*) http://hogemoge.com/$1 [R=301,L]
とすると、「noboruhirabayashi.com/blog/?feed=rss2」を取得できて無事表示されます。
google feed APIを利用するとドメインが統一されていなくても表示される、というか別ドメインのデータも引っ張れるので便利ですので、状況に応じてこちらを利用するとよいのかなと。