繁体   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