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

javascript – 全局添加X-CSRF-Token标头到XMLHttpRequest()的所有实例;

我正在使用第三方库,它使用新的XMLHttpRequest生成原始XMLHttpRequest.

这绕过了我的CSRF保护并被我的rails服务器击落.

有没有办法在实例化时将全局添加预定义的CSRF令牌($(‘Meta [name = csrf-token]’).attr(‘content’))添加到XMLHttpRequest的所有实例?

解决方法:

我建议intercept calls到send方法

(function() {
    var send = XMLHttpRequest.prototype.send,
        token = $('Meta[name=csrf-token]').attr('content');
    XMLHttpRequest.prototype.send = function(data) {
        this.setRequestHeader('X-CSRF-Token', token);
        return send.apply(this, arguments);
    };
}());

这不会在实例化时添加标头,而是在发送请求之前添加标头.您也可以拦截对新XMLHttpRequest()的调用,但这不会有用,因为您需要等待添加标头直到调用open.

您可能还希望包含对请求的目标URL的测试,以便您只在调用自己的api时添加标头.不这样做可能会将令牌泄漏到其他地方,甚至可能会破坏不允许此标头的跨域CORS调用.

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

相关推荐