1

これは私のjsコードです。

最新の jQuery および Backbone ライブラリを使用しています。

(function(Tweet) {

    //Tweet.Model = Backbone.Model.extend();

    Tweet.Collection = Backbone.Collection.extend({
        url: function() {

            return "http://search.twitter.com/search.json?q=twitterapi&callback=?";

        },

        parse: function(data) {
            return data.results;
        }
    });

    Tweet.Views.List = Backbone.Layout.extend({
        template: "#list",

        events: {
            "click li": "update"
        },

        update: function(ev) {
            var index = $(ev.target).index();
            var model = this.collection.at(index);

            this.trigger("update", model);
        },

        serialize: function() {
            return { tweets: this.collection };
        }
    });

    Tweet.Views.Detail = Backbone.Layout.extend({
        template: "#detail",

        serialize: function() {
            return { tweet: this.model };
        }
    });
}) (twitter.module("tweet"));

URL http://search.twitter.com/search.json?q=twitterapi&callback=を実行すると? 私のブラウザでは、結果を見ることができます。

というわけでツイッターと繋がりました。

callback=? を削除すると? コードの URL から、クロス ドメイン エラーが発生します。

つまり、私のバージョンの jQuery と Backbone は、私の要求を jsonp コールバックとして自動的にフォーマットするのに十分なほど更新されているということです。

しかし、私は継続的に 403 エラーを受け取ります。

以下は、Chrome コンソールで赤字で示されているエラーです。

GET http://search.twitter.com/search.json?q=twitterapi&callback=jQuery19107466092116665095_1364193857160&_=1364193857161 403 (Forbidden) 

私が自分の側で何か間違ったことをしているかどうかを理解するのを手伝ってください?

アップデート

いくつかの提案に基づいて、次のことを試しました。

これを追加しましたhttps://github.com/jacebeleren/backbonelayoutmanager/commit/6af9a367cea5bcf460b67319137d6f077b1ff5ec

..そしてこれ https://github.com/jacebeleren/backbonelayoutmanager/commit/01cfba1c416673617591b0c936e41a27b93bbf51

しかし、エラーは解決しません。

更新 2

これらは、403 エラーに対して取得する要求ヘッダーです。

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:pid=v3:1364189785315637597538615; guest_id=v1%3A136419139351112726; k=10.35.60.125.1364192963733514; __utma=43838368.881187358.1364192967.1364192967.1364192967.1; __utmc=43838368; __utmz=43838368.1364192967.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _twitter_sess=BAh7CToPY3JlYXRlZF9hdGwrCKCsPKA9AToMY3NyZl9pZCIlNzc0NjU5ZmQ5%250AN2Q4MjA0M2RjYzQzMjMyZTFjMDk3ZTkiCmZsYXNoSUM6J0FjdGlvbkNvbnRy%250Ab2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2VkewA6B2lkIiUxZTc3%250AMTFiNjcwN2M0OWM0OTVmMDA0ODgxNTQ1MzdkZA%253D%253D--43c3e3ef6a53296eb8f6640c3e9dc21539f18ef6
Host:search.twitter.com
Referer:http://bblm.localhost/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
4

1 に答える 1

0

バックボーンは、JSONp 呼び出しのリクエストを自動的にフォーマットしません。{ dataType: "jsonp" }フォーマットするには、jQuery のフェッチ呼び出しでを送信する必要があります。

これを参照してください: https://stackoverflow.com/a/9996420/340266

于 2013-03-25T10:26:41.707 に答える