簡體   English   中英

如何在 javaScript 中獲取 CSRF 令牌值

[英]How to get CSRF token Value at javaScript

我有這樣的要求,當我發送請求時, CSRF-token應該與它一起發送。 我探索了一些 SO 問題,但我找不到解決方案。

我已經編寫了如下代碼來在發送請求時添加令牌,

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

這工作正常,但現在我需要在函數中添加 CSRF-Token 代替xyz12345

我試過如下 ajax 功能。 `

$.ajax({
            type: "POST",
            url: "/test/"
            //data: { CSRF: getCSRFTokenValue()}
        }).done(function (data) {
        var csrfToken = jqXHR.getResponseHeader('X-CSRF-TOKEN');
        if (csrfToken) {
            var cookie = JSON.parse($.cookie('helloween'));
            cookie.csrf = csrfToken;
            $.cookie('helloween', JSON.stringify(cookie));
        }

        $('#helloweenMessage').html(data.message);

    });

但這還沒有奏效。 所以我的問題是:如何獲得 js 端 CSRF-Token 值?

我通過這種方式獲得了我的 CSRF 令牌,通過添加功能:

$.get('CSRFTokenManager.do', function(data) {
   var send = XMLHttpRequest.prototype.send,
   token =data;
   document.cookie='X-CSRF-Token='+token;
   XMLHttpRequest.prototype.send = function(data) {
       this.setRequestHeader('X-CSRF-Token',token);
       //dojo.cookie("X-CSRF-Token", "");

       return send.apply(this, arguments);
   };
});

其中CSRFTokenManager.do將從CSRFTokenManager類調用。
現在它在每個請求的標頭和 cookie 中添加令牌。

你需要在新的 Laravel 中做到這一點

var csrf = document.querySelector('meta[name="csrf-token"]').content;
    $.ajax({
        url: 'url',
        type: "POST",
        data: { 'value': value, '_token': csrf },
        success: function (response) {
            console.log('value set');
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM