【问题标题】:403 Forbidden for Twitter Search using Backbone and jQuery403 禁止使用 Backbone 和 jQuery 进行 Twitter 搜索
【发布时间】:2013-03-14 14:34:04
【问题描述】:

这是我的 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=?在我的浏览器上,我可以看到结果。

所以我与 twitter 有联系。

当我删除回调时=?从我的代码中的 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

【问题讨论】:

  • 我只能猜测 twitter 模块的作用,也许它会创建与请求一起发送的凭据?检查网络选项卡并准确查看发送了哪些标头并在此处发布原始获取请求
  • 我已经提出了请求标头。如果我需要做任何其他事情,请告诉我。谢谢
  • 您可以尝试删除该 Cookie 并再次发出请求吗?
  • 我已经清除了我的缓存并删除了我所有的 cookie,但还是同样的问题。
  • 面临同样的错误。似乎他们正在跟踪 ip 或类似的东西,因为它在我同事的电脑上运行良好。不明白他们为什么这样做

标签: jquery backbone.js twitter jsonp


【解决方案1】:

Backbone 不会自动格式化您的 JSONp 调用请求。您需要在 fetch 调用中发送 { dataType: "jsonp" } 以便 jQuery 对其进行格式化。

看到这个:https://stackoverflow.com/a/9996420/340266

【讨论】:

猜你喜欢
  • 2018-11-24
  • 2021-12-31
  • 2018-11-29
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 2014-08-03
相关资源
最近更新 更多