【问题标题】:Removing a CSRF token from a GET request to a 3rd party API in a Rails + Ember app?从 GET 请求中删除 CSRF 令牌到 Rails + Ember 应用程序中的第 3 方 API?
【发布时间】:2014-04-02 13:16:41
【问题描述】:

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

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

或者我需要在这里变得花哨吗?

【问题讨论】:

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


    【解决方案1】:

    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);
        }
    });
    

    【讨论】:

    • 它已经通过 API 的构建方式通过 Rails 端注入,我需要一种方法来删除它而不是注入它。这是去掉一个还是增加一个?我完全是个菜鸟,所以如果可以的话,请忍受我的愚蠢问题:)
    • CSRF 令牌必须附加到正在发送的 ajax 标头,所以如果它是使用 rails 附加的,那么这意味着 rails 会在页面中注入一些 javascript,执行类似于我的 hack 的操作。
    猜你喜欢
    • 2023-02-23
    • 2021-10-17
    • 2012-08-09
    • 1970-01-01
    • 2012-05-11
    • 2019-12-06
    • 2015-12-07
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多