微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用CORS和backbonejs向API发出ajax请求

我正在开发一个backbone.js项目,我正在调用我的github repo.我有我的Collections和Models bootloaded,所以当我的页面构建时它们就存在了,但是当我调用model.fetch()时,我得到这样的消息:(用户名替换:username)
XMLHttpRequest cannot load https://api.github.com/users/:username.
Origin http://mydomain.com is not allowed by Access-Control-Allow-Origin.

我已经阅读了一些消息post1,post2,他们提到修改了backbone.sync函数,但我不完全确定如何.这是我到目前为止的代码(这是在我的Backbone.Router中):

userDetails: function(id) {
    console.log('Loading: userDetails');
    var User = Users.get(id);
    User.fetch({dataType: "jsonp"});
    console.log(User);
    userView = new UserView({
        model: User
    });
    userView.render();
},

谢谢!

后端启用CORS. jQuery基础知道它何时发出跨源请求并相应地修改它.问题是服务器,在这种情况下,api.github.com不允许CORS请求.

服务器必须以(最小值)响应:

Access-Control-Allow-Origin:*(或您的页面所在的主机)

由于您可能不拥有github,因此您必须编写服务器端代理或查看github是否可以为您提供JSONP调用(jQuery也很乐意为您提供).

MDN Documentation on Access-Control

编辑

话虽这么说,如果您需要通过骨干修改jQuery提出的请求,则无需覆盖同步方法.使用jQuery’s $.ajaxSetup方法添加任何其他标头,设置类型等.只需确保在相同的上下文或闭包中运行$.ajaxSetup方法,因为.save(),. fetch()或.destroy()将运行或者你不会得到$.ajaxSetup中正在执行的工作

原文地址:https://www.jb51.cc/ajax/160151.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐