簡體   English   中英

使用Django csrf令牌填充Cookie

[英]Populate a cookie with a Django csrf token

我需要了解一些東西。

我在服務器A(django-rest-framework)上有一個休息服務器。 服務器B(angularjs)上的一個應用程序請求其余服務器。 我想添加身份驗證。 每次我請求h ttp://serverA/api-auth/login/ ,它都會返回403,因為我沒有傳遞csrf令牌。

因此,在我的app.js中,我添加了:

.run(function($http, $cookies) {
    $http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
});

現在,很好,我可以發送csrf令牌。 我的問題是,如何填充Cookie? 我必須在發布前做get()以獲得令牌嗎? 因為當前我的cookie是空的:(

謝謝

如果您不共享同一域,則不能使用SessionAuthentication方法。 在您的情況下, OAuth2Authentication是必經之路。

假設您使用jquery ajax來發布angularjs代碼,則可以將csrf令牌放入meta標記中

<!--<meta name="csrf-token" content="{{csrf_token}}">-->

然后設置您的jquery ajax方法以包含csrf令牌。

jQuery(document).ajaxSend(function(event, xhr, settings) {
    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
        //var token = $('meta[name="csrf-token"]').attr('content');
        var csrftoken = $.cookie('csrftoken');
        xhr.setRequestHeader("X-CSRFToken", csrftoken);
    }..............
});

暫無
暫無

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

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