[英]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.