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