8

jFeedをプラグインするjQueryrssを使用し、Webサイトでサンプルコードを使用して、機能していないように見える次のコードを作成しました。

jQuery.getFeed({
    url: 'http://www.hotukdeals.com/rss/hot',
    success: function(feed) {
        alert(feed.title);
    }
});

次のようなメッセージが表示されます。

XMLHttpRequest cannot load http://www.hotukdeals.com/rss/hot. Origin http://intranet is not allowed by Access-Control-Allow-Origin.

このアクセス制御メッセージが表示される理由を知っている人はいますか?このrssフィードは、デスクトップおよびオンラインのrssリーダーで正常に機能します...

4

2 に答える 2

31

警告

Google Feed APIは正式に非推奨になり、機能しなくなりました。

プラグインがなくても非常に簡単に実行でき、返されるデータはjsonにあります

        $(function(){
        url = 'http://www.thetutlage.com/rss.xml';
        $.ajax({
        type: "GET",
        url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&callback=?&q=' + encodeURIComponent(url),
        dataType: 'json',
        error: function(){
            alert('Unable to load feed, Incorrect path or invalid feed');
        },
        success: function(xml){
            values = xml.responseData.feed.entries;
            console.log(values);
        }
    });
    });

xmlファイルを指していることを確認し、URLをURLRssフィードに変更してください。

于 2012-07-05T15:26:18.567 に答える
1

JavaScriptの同一生成元ポリシーが原因で失敗します。これは、基本的に、ファイルを取得および操作できる場所を制限します。

一般に、現在のページとは異なる場所からコンテンツ(この場合はRSSフィード)を取得することはできません。例外は画像とスクリプトだけです。

したがって、あなたの場合の1つの解決策は、サーバーにプロキシスクリプトを設定することです。これは、RSSフィードを呼び出し、結果をページに中継するだけです。そうすれば、ブラウザの観点からは、すべてのコンテンツが同じ起源から来ています。

于 2012-07-05T15:03:47.310 に答える