从GET请求中删除CSRF令牌到Rails + Ember应用程序中的第三方API?

时间:2014-04-02 13:16:42

标签: jquery ruby-on-rails ajax json ember.js

我正在使用第三方API,我需要在www.whatever.com/index.json上公开获得json响应,index.json是我需要抓取的。在JSbin中,我已经完全在功能上尝试以基本方式破解它,以便在将其构建到应用程序之前检查它是如何运行的。它工作得很好,但是我在主应用程序中收到了正确的响应,我们用它发送了一个CSRF令牌,这导致204没有内容,因为它是我们的CSRF令牌,他们没有使用一个用于简单的GET请求。发送

时,是否有一种简单的方法可以将其从传输中删除
Ember.$.get(www.whatever.com/index.json)

或者我需要在这里看到它吗?

1 个答案:

答案 0 :(得分:0)

CSRF令牌不会自动注入您的ajax调用。您不得不劫持ajax请求以注入它,您可以轻松修改该劫持并排除跨站点调用。

这是我的csrf劫持的一个例子,它只针对我们的域

// hack to inject the csrf token
jQuery(document).ajaxSend(function(event, xhr, settings) {
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
      var token = $('input[name="csrfmiddlewaretoken"]').val();
      xhr.setRequestHeader("X-CSRFToken", token);
    }
});